große TXT (800MB) splitten?

  • habe hier eine große log datei, darf sie leider nicht löschen

    und diese komplett in autoit zu verarbeiten geht nunmal nicht(kommt ne Fehlermeldung)

    Wie stelle ich es an das ich diese TXT nach meinetwegen 10000 Zeilen Splittet?

    und ich damit wieder arbeiten kann


    grüße

  • Muss das unbedingt per AutoIt geschehen oder reicht ein externes Programm bevor du die Datei(en) weiterverabeitest?

    Zum Beispiel FileSplit könnte das erledigen.

    Wenn unbedingt in AutoIt, würde ich das mit Schleifen und FileReadLine() erledigen.

    Grüße,
    Buffo

  • Hallo!

    solche Probleme kommen mir irgendwie bekannt vor:
    meinereiner hätte tail aus der gnu-Ecke genommen, da kann ich die letzten x Zeilen aus einer Datei sauber rausschneiden und von der Programmierung her braucht das Teil extrem wenig Rechnerleistung.

    Meist sind die Anfangszeilen eines solchen machwerks sowieso "durch zeitablauf wertlos" geworden.

    Protokollierer sollten halt immer prot200711.log oder sowas anlegen.

    Gruß

    German
    -wer mit Fein,Flex und Festool schraubt --> hackt mit AutoIt-

  • hi,

    ich hatte ein ähnlich gelagertes Problem. Da konnt mir Bernd gut helfen. Versuch es mal mit seiner Func.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

    Const $nMaxZeilen = 100 ; Maximale Anzahl Zeilen je Teil

    $szFilename = "out.txt"

    $cLines = _FileCountLines($szFileName)

    If $cLines > 0 Then
    $nTeile = Round($cLines / 100) ; Anzahl der Teile berechnen
    Dim $aszParam[$nTeile]

    ; erst mal Anzahl Teile - 1 lesen
    For $index = 0 To $nTeile - 2
    $aszParam[$index] = FileReadLine($szFileName,$index*$nMaxZeilen+1) & ".." & FileReadLine($szFileName,($index+1)*$nMaxZeilen)
    Next

    ; und jetzt den letzten Teil lesen
    $aszParam[$nTeile-1] = FileReadLine($szFileName,($nTeile-1)*$nMaxZeilen+1) & ".." & FileReadLine($szFileName,$cLines)

    $szOutput = ""
    For $index = 0 To $nTeile-1
    $szOutput &= $index+1 & ". Teil: " & $aszParam[$index] & @CRLF
    Next

    MsgBox(0, "", $szOutput)
    EndIf

    [/autoit]


    mfg Taucher_2006

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D