txt datei nach bestimmten Zeichenfolgen durchsuchen und zeilen rauslöschen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    txt datei nach bestimmten Zeichenfolgen durchsuchen und zeilen rauslöschen

    Hallo,
    ich bräuchte einmal eure hilfe:

    ich möchte das mein Programm in einer datei jede zeile ausließt und anschlißend in einer For each Schleife überprüft ob bestimmte werte Übereinstimmen wenn ja soll die jeweilge Zeile Rausgelöscht werden.
    (Also im Prinzip jede zeile die nur folgende Zeichenfolge enthält da sie doppelt ist und keine Verwendung hat :/)

    bei "submessage[" wird der string zweimal geteilt und die sog. EventID in diesem falle die nummer 0 zu bekommen

    ====> submessage[0].pattern[0].extramappings=event.name\=__stringConstant("

    Kurzer Inhalt der Datei (Die Datei ist sehr Groß):

    Quellcode

    1. # FlexAgent Regex Configuration File
    2. do.unparsed.events=true
    3. ipv6.aware=true
    4. regex=(\\S+-\\S+-(\\S+)-\\S+)\\s+\:\\s+(.*)
    5. token.count=3
    6. token[0].name=MessageId
    7. token[0].type=String
    8. token[1].name=CiscoSeverity
    9. token[1].type=String
    10. token[2].name=MessageDetail
    11. token[2].type=String
    12. submessage.messageid.token=MessageId
    13. submessage.token=MessageDetail
    14. additionaldata.enabled=true
    15. event.deviceSeverity=CiscoSeverity
    16. event.message=MessageDetail
    17. severity.map.veryhigh.if.deviceSeverity=0,1
    18. severity.map.high.if.deviceSeverity=2,3
    19. severity.map.medium.if.deviceSeverity=4,5
    20. severity.map.low.if.deviceSeverity=6,7
    21. submessage.count=4025
    22. submessage[0].messageid=PLATFORM-AFMON_EA_OOR-4-LC_FLOWS_OOR_GREEN
    23. submessage[0].pattern.count=1
    24. submessage[0].pattern[0].regex=(.*)
    25. submessage[0].pattern[0].fields=event.message
    26. submessage[0].pattern[0].extramappings=event.name\=__stringConstant(" [size=12][b]<==========Zeilen nur mit dieser Zeichenfolge sollen gelöscht werden![/b][/size]
    27. submessage[0].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON_EA_OOR-4-LC_FLOWS_OOR_GREEN")|event.message=__stringConstant("Performance traffic monitoring has cleared an out-of-resource condition. Performance traffic monitoring process on the linecard has detected that the number of flows being monitored on an LC is no longer at maximum.")
    28. submessage[1].messageid=PLATFORM-AFMON_EA_OOR-4-LC_FLOWS_OOR_RED
    29. submessage[1].pattern.count=1
    30. submessage[1].pattern[0].regex=(.*)
    31. submessage[1].pattern[0].fields=event.message
    32. submessage[1].pattern[0].extramappings=event.name\=__stringConstant("
    33. submessage[1].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON_EA_OOR-4-LC_FLOWS_OOR_RED")|event.message=__stringConstant("Performance traffic monitoring has encountered an out-of-resource condition. Performance traffic monitoring process on the linecard has detected that the number of flows being monitored on a LC has reached maximum capacity. New flows will no longer be learnt")
    34. submessage[2].messageid=PLATFORM-AFMON_EA_OOR-4-NP_FLOWS_OOR_GREEN
    35. submessage[2].pattern.count=1
    36. submessage[2].pattern[0].regex=(.*)
    37. submessage[2].pattern[0].fields=event.message
    38. submessage[2].pattern[0].extramappings=event.name\=__stringConstant("
    39. submessage[2].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON_EA_OOR-4-NP_FLOWS_OOR_GREEN")|event.message=__stringConstant("Performance traffic monitoring has cleared an out-of-resource condition. Performance traffic monitoring process on the linecard has detected that the number of flows being monitored on a LC is no longer at maximum.")
    40. submessage[3].messageid=PLATFORM-AFMON_EA_OOR-4-NP_FLOWS_OOR_RED
    41. submessage[3].pattern.count=1
    42. submessage[3].pattern[0].regex=(.*)
    43. submessage[3].pattern[0].fields=event.message
    44. submessage[3].pattern[0].extramappings=event.name\=__stringConstant("
    45. submessage[3].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON_EA_OOR-4-NP_FLOWS_OOR_RED")|event.message=__stringConstant("Performance traffic monitoring has encountered an out-of-resource condition. Performance traffic monitoring process on the linecard has detected that the number of flows being monitored on a LC has reached maximum capacity. New flows will no longer be learnt")
    46. submessage[4].messageid=PLATFORM-AFMON_EA_VERIFY-6-POLICY_ERROR
    47. submessage[4].pattern.count=1
    48. submessage[4].pattern[0].regex=(.*)
    49. submessage[4].pattern[0].fields=event.message
    50. submessage[4].pattern[0].extramappings=event.name\=__stringConstant("
    51. submessage[4].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON_EA_VERIFY-6-POLICY_ERROR")|event.message=__stringConstant("Peformance traffic service policy verification encountered the specified error")
    52. submessage[5].messageid=PLATFORM-AFMON-3-AVL_TREE_CORRUPT
    53. submessage[5].pattern.count=1
    54. submessage[5].pattern[0].regex=(.*)
    55. submessage[5].pattern[0].fields=event.message
    56. submessage[5].pattern[0].extramappings=event.name\=__stringConstant("
    57. submessage[5].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-AVL_TREE_CORRUPT")|event.message=__stringConstant("During restart, corruption was detected in the AVL tree. Tree is reinitialized as part of recovery, some interval history during this time could be lost for the flow")
    58. submessage[6].messageid=PLATFORM-AFMON-3-EA_DEBUG_INIT_FAIL
    59. submessage[6].pattern.count=1
    60. submessage[6].pattern[0].regex=(.*)
    61. submessage[6].pattern[0].fields=event.message
    62. submessage[6].pattern[0].extramappings=event.name\=__stringConstant("
    63. submessage[6].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-EA_DEBUG_INIT_FAIL")|event.message=__stringConstant("Debug initialization failed within EA. Debugs may not be printed")
    64. submessage[7].messageid=PLATFORM-AFMON-3-EA_LTRACE_INIT_FAIL
    65. submessage[7].pattern.count=1
    66. submessage[7].pattern[0].regex=(.*)
    67. submessage[7].pattern[0].fields=event.message
    68. submessage[7].pattern[0].extramappings=event.name\=__stringConstant("
    69. submessage[7].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-EA_LTRACE_INIT_FAIL")|event.message=__stringConstant("Ltrace initialization failed within EA. Ltraces may not be printed")
    70. submessage[8].messageid=PLATFORM-AFMON-3-EA_POL_MOD_ROLLBACK_FAIL
    71. submessage[8].pattern.count=1
    72. submessage[8].pattern[0].regex=(.*)
    73. submessage[8].pattern[0].fields=event.message
    74. submessage[8].pattern[0].extramappings=event.name\=__stringConstant("
    75. submessage[8].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-EA_POL_MOD_ROLLBACK_FAIL")|event.message=__stringConstant("AFMon EA encountered an error during rollback phase of policy modification on an interface. In this condition, h/w programming of the policy may not be in sync with policy configuration.")
    76. submessage[9].messageid=PLATFORM-AFMON-3-ERR_EVENT_ATTACH
    77. submessage[9].pattern.count=1
    78. submessage[9].pattern[0].regex=(.*)
    79. submessage[9].pattern[0].fields=event.message
    80. submessage[9].pattern[0].extramappings=event.name\=__stringConstant("
    81. submessage[9].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-ERR_EVENT_ATTACH")|event.message=__stringConstant("Failed to attach event to event manager.")
    82. submessage[10].messageid=PLATFORM-AFMON-3-ERR_EVENT_INIT
    83. submessage[10].pattern.count=1
    84. submessage[10].pattern[0].regex=(.*)
    85. submessage[10].pattern[0].fields=event.message
    86. submessage[10].pattern[0].extramappings=event.name\=__stringConstant("
    87. submessage[10].pattern[0].extramappings=event.name\=__stringConstant("PLATFORM-AFMON-3-ERR_EVENT_INIT")|event.message=__stringConstant("Failed to initialize event manager event.")



    Mein Code bis jetzt:

    VB.NET-Quellcode

    1. Dim sInput() As String = IO.File.ReadAllLines("C:\LocalData\l.txt")
    2. ' Datei schreiben
    3. Dim sOutput As New IO.StreamWriter("C:\LocalData\l.txt")
    4. ' Zähler auf 1 setzen
    5. Dim i As Integer = 1
    6. ' Alle Zeilen durchlaufen
    7. For Each line As String In sInput
    8. AktuelleZeile1 += 1
    9. If line.Contains("submessage[") Then
    10. st1 = line.Split("[") 'Splitten der EventID
    11. st2 = st1(1).Split("]")
    12. EventID = st2(0)
    13. If line.StartsWith("submessage[" & EventID & ".pattern[0].extramappings=event.name\=__stringConstant(""") Then
    14. If line.Contains(""")|event.message=__stringConstant(""") Then
    15. Else
    16. line(AktuelleZeile1) = "" 'Hier sollte eigentlich die Zeile gelöscht werden :/
    17. sOutput.WriteLine(line)
    18. End If
    19. End If
    20. i += 1
    21. Next
    22. ' StreamWriter schließen
    23. sOutput.Close()


    Der eingefügte ausschnitt der Datei Stammt von einem Cisco IOS SDK Regex Parser für HP Arcsight
    VIelen Lieben dank schonmal im Voraus :)
    mfg
    jonkopp

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jonkopp“ ()

    VB.NET-Quellcode

    1. Dim Filename = "C:\LocalData\l.txt"
    2. Dim Lines As New List(Of String)
    3. For Each Line In IO.File.ReadAllLines(Filename)
    4. If Not Line Like "submessage*.pattern[0].extramappings=event.name\=__stringConstant(""" Then Lines.Add(Line)
    5. Next
    6. IO.File.WriteAllLines(Filename, Lines)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Veränderter Code:

    VB.NET-Quellcode

    1. Sub parserchange()
    2. Dim EventID as String
    3. DIm st1() as String
    4. Dim st2() as String
    5. ​Dim Filename = "C:\LocalData\l.txt"
    6. Dim Lines As New List(Of String)
    7. For Each Line In IO.File.ReadAllLines(Filename)
    8. If Line.Contains("submessage[") Then
    9. st1 = Line.Split("[") 'Splitten der EventID
    10. st2 = st1(1).Split("]")
    11. EventID = st2(0)
    12. If Not Line Like "submessage[" & EventID & "].pattern[0].extramappings=event.name\=__stringConstant(""" Then
    13. Lines.Add(Line)
    14. End If
    15. End If
    16. Next
    17. IO.File.WriteAllLines(Filename, Lines)
    18. End Sub


    Original Sub

    VB.NET-Quellcode

    1. Sub parserchange()
    2. Dim Filename = "C:\LocalData\l.txt"
    3. Dim Lines As New List(Of String)
    4. For Each Line In IO.File.ReadAllLines(Filename)
    5. If Not Line Like "submessage*.pattern[0].extramappings=event.name\=__stringConstant(""" Then Lines.Add(Line)
    6. Next
    7. IO.File.WriteAllLines(Filename, Lines)
    8. End Sub
    @jonkopp Du kannst übrigenms die Zeilen 9 und 10 des oberen Snippets zusammenfassen, indem Du als Split-Parameter ein Char-Array mit beiden Zeichen übergibst.
    Steppe den Code mal durch und poste den Inhalt von Line, wo Du eine Ausgabe erwartest, aber keine kommt.
    Gugst Du Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe nicht verstanden, weshalb du Zeilen 8-11 benötigst.
    Bei mir wird das alles von der Filterbedingung in Zeile 6 abgehandelt.

    Welche Ausgabe bekommst du denn mit meinem Code und was gefällt dir daran nicht?

    Edit: Ah OK, es könnte ein Problem mit der eckigen Klammer sein, die wird bei Like als special character verwendet und muss besonders behandelt werden.

    VB.NET-Quellcode

    1. ​Sub ParserChange()
    2. Dim Filename = "C:\LocalData\l.txt"
    3. Dim Lines As New List(Of String)
    4. For Each Line In IO.File.ReadAllLines(Filename)
    5. If Not Line Like "submessage*.pattern[[]0].extramappings=event.name\=__stringConstant(""" Then Lines.Add(Line)
    6. Next
    7. IO.File.WriteAllLines(Filename, Lines)
    8. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()