Ich versuche, zwei Textdateien zu vergleichen und die Ergebnisse in einer neuen Datei zu speichern. Es sollte nur Zeilen anzeigen, die neu sind und Sortierreihenfolgen ignorieren. Ich möchte nur sehen, was neu ist und keine Zeilenänderungen. Um dies zu erreichen, habe ich mehrere Möglichkeiten in einer Batchdatei ausprobiert, die Sie unten sehen können. Zuerst verwende ich uniq und Art wie die Reihenfolge der beiden Dateien zu ändern:Neue Zeilen zwischen zwei Dateien auf neue Datei filtern
D:/filetype/sort.exe -b D:\filetype\listfile\listfile_clean_tmp3_1.txt -oD:\filetype\listfile\listfile_clean_tmp4.txt
Danach habe ich beiden Dateien in einen neuen zu vergleichen versucht.
1) über comm
D:/filetype/comm.exe --nocheck-order -2 -3 d:/filetype/listfile/listfile_clean_tmp4.txt d:/filetype/listfile/archive/tmp/all.txt > D:\filetype\listfile\listfile_clean_tmp5.txt
eine schreckliche Lösung, funktioniert nicht richtig. Wenn es etwas anderes in der Reihenfolge gibt, gibt es viele falsche Ergebnisse aus. Wenn ich zum Beispiel das Ergebnis im Archiv ablege und es erneut mit ihm selbst vergleiche, werden neue Zeilen angezeigt. Via
2) diff
D:/filetype/diff.exe --new-line-format="" --unchanged-line-format="" d:/filetype/listfile/listfile_clean_tmp4.txt d:/filetype/listfile/archive/tmp/all.txt > D:\filetype\listfile\listfile_clean_tmp5.txt
Gleiche wie .comm, wenn ich die archivierten Datei mit sich selbst vergleichen werden neue Linien angezeigt werden soll.
3) Grep, SED und Diff
D:/filetype/diff.exe -U $(wc -l < (D:/filetype/listfile/listfile_clean_tmp4.txt) (D:/filetype/listfile/listfile_clean_tmp4.txt D:/filetype/listfile/archive/tmp/all.txt | D:/filetype/grep.exe '^-' | D:/filetype/sed.exe 's/^-//g' > D:\filetype\listfile\listfile_clean_tmp5.txt
nicht in der Lage waren diese auf einem Windows Batch zu bekommen, und können nicht herausfinden, warum die Fehlermeldung „Falsche Syntax für Namen Datei oder einen Ordner“ erscheint. Irgendwelche Ideen wären großartig.
Einige weitere Informationen - ich coreutils in Windows bin mit - ein Py Skript, batch verwenden könnte, php und corutils - ich addiere das Ergebnis zum Archiv
Hier ist ein Beispiel-Datei: http://pastebin.com/raw/tNGSu2W6
Zuerst: Ich vergleiche es mit einer leeren txt-Datei (all.txt), im letzten Schritt füge ich es in all.txt (als Archiv) zusammen und normalerweise sollte er beim nächsten Lauf keinen Unterschied finden.
Um niemanden zu verwirren ist dies das Ganze (es ist ein bisschen spartanisch). trow Fehlermeldungen an Fenstern http://pastebin.com/T68sqpET
Update 1 den pastbin Code geändert, da ein Tippfehler auf Seiten mit diff.exe "< filename <filename> output
" wird war. Auch die Zahlen waren nicht die Schuld von diff. Ich habe "uniq.exe -c" verwendet und musste -c entfernen.
Können Sie [bearbeiten] und fügen Sie Ihre zwei Testdateien hinzu? – DavidPostill
Fertig :) Ich hoffe Pastebin ist in Ordnung. – Deex
Ich sehe in der letzten Befehlszeile einige unsymmetrische Klammern(). Außerdem müssen Sie [Escape] (http://ss64.com/nt/syntax-esc.html) alle 'cmd' giftigen Zeichen, um sie richtig zu' diff.exe' zu liefern: escape '<' as '^ < 'und zu' grep.exe': escape ˙^˙ als '^^'. – JosefZ