Bestimmten Text aus einer Datei auslesen und in einer zweiten Datei speichern

  • Guten Tag Forum

    Ich habe die Aufgabe, Text aus einer Logdatei zu kopieren und in eine neue Datei zu schreiben. (zeilenweise, bei Vorkommen bestimmter Zeichen)
    Ist so etwas mit AutoIt zu lösen? :S

    Bis jetzt habe ich AutoIt dazu verwendet, Software automatisiert zu installieren u. Ä.

    Ich wäre sehr froh, wenn mir jemand Tipps geben kann, wie man mein beschriebens Problem am besten löst (sofern möglich). Ich möchte mich anhand dieser Aufgabe auch gleich tiefer mit AutoIt beschäftigen (learning by doing), habe aber noch keinen Schimmer, wo ich anfangen soll. Wie gesagt, Grundkenntnisse sind da aber bisher für ganz andere Aufgaben benutzt worden.

    Grüsse
    Marius

  • Die Datei zeilenweise einlesen, nach dem Zeichen suchen und falls vorhanden die Zeile in eine neue Datei schreiben.

    Befehle dazu:
    FileOpen()
    FileReadLine()
    StringInStr() oder StringRegExp()
    FileWriteLine()
    FileClose()

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Herzlichen Dank UEZ

    So weiss ich welche Befehle ich als nächstes anschauen sollte, damit ich zielgerichtet lernen kann. Super!
    Werde meine Ergebnisse dann gerne hier dokumentieren.

    Gruss
    Marius

  • Hallo Sprenger 120

    Vielen Dank für das Angebot.

    Ich habe eine solche Logdatei (gekürzt und anonymisiert) beigelegt. Es sollen nur die Zeilen mit den Schlüsselbegriffen "Logging on" und "Logoff" in eine neue Datei kopiert werden die dann täglich per internem Mail an uns Sysadmins geht und dort archiviert werden soll.

    Die Grösse der Originaldatei kann bisweilen auch 1MB überschreiten, falls das eine Rolle spielt. Es handelt sich um die Logdatei eines SSL VPN Zugangs.

    Freue mich über Vorschläge.
    Ich werde leider frühestens morgen dazukommen, Eure Tipps und den Vorschlag von Sprenger120 anzusehen.

    Gruss,
    Marius

  • Hier eine schnell erstellte Variante:

    [autoit]


    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    Check1("Test1.txt", "Test1_new.log")

    [/autoit][autoit][/autoit][autoit]

    Func Check1($file, $newlog)
    Local $aTxt, $i, $sNew
    _FileReadToArray($file, $aTxt)
    For $i = 1 To $aTxt[0]
    If StringInStr($aTxt[$i], " Logging o") Then $sNew &= $aTxt[$i] & @CRLF
    Next
    Local $hFile = FileOpen($newlog, 2)
    FileWrite($newlog, $sNew)
    FileClose($hFile)
    Return 1
    EndFunc

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Wow! Das ist ja der Hammer...

    Also ich will das dann bei Gelegenheit schon noch verstehen aber für den Moment hilft Dein Script perfekt, vielen herzlichen Dank. :thumbup:

    Gruss,
    Marius