StringInStr und doppelte Einträge finden..vllt. auch _sort func

  • Hallo!

    Ich habe eine Textdatei mit vielen Einträgen. Mir ist es wichtig das das Script die doppelten Einträge findet und löscht. Am besten die Textdatei auch sortiert. Hat jemand schon solch ein UDF oder ähnliches gesehen?

    Spoiler anzeigen
    [autoit]

    #Include <Array.au3>
    #Include <file.au3>
    Local $stringCount = 0
    $file = FileOpen("sorted.txt", 0)
    For $i = _FileCountLines($file) to 1 step -1
    $t = $i + 1
    $readline1 = FileReadLine($file, $i)
    $readline2 = FileReadLine($file, $t)
    If StringInStr($readline1, $readline2) Then
    $stringCount += 1
    _FileWriteToLine($file, $t, "", 1)
    EndIf
    Next
    FileClose($file)

    [/autoit]
  • Hallo Morrison,

    versuchs doch einfach über Arrayfunktionen:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #include<array.au3>
    Dim $aRecords, $aNew
    If Not _FileReadToArray("ToSort.txt",$aRecords) Then
    MsgBox(4096,"Error", " Error reading File to Array error:" & @error)
    Exit
    EndIf
    _ArrayDisplay($aRecords)
    $aNew = _ArrayUnique($aRecords)
    _ArrayDisplay($aNew)
    _FileWriteFromArray("Sorted.txt",$aNew,2)

    [/autoit]

    PS.: das Ursprungsfile habe ich in ToSort.txt umbenannt, im Ausgabefile musst du nur noch die ertsen beiden Zeilen löschen
    mfg (Auto)Bert

  • Hallo Morrison,

    da dein Textfilde schon sortiert war, leider eine Zeile vergessen. Hier noch einmal das jetzt komplette Skript:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #include<array.au3>
    Dim $aRecords, $aNew
    If Not _FileReadToArray("ToSort.txt",$aRecords) Then
    MsgBox(4096,"Error", " Error reading File to Array error:" & @error)
    Exit
    EndIf
    _ArraySort($aRecords)
    _ArrayDisplay($aRecords)
    $aNew = _ArrayUnique($aRecords)
    _ArrayDisplay($aNew)
    _FileWriteFromArray("Sorted.txt",$aNew,2)

    [/autoit]


    mfg (Auto)Bert