Ich möchte zwei Dateien unterscheiden und Zeilen ignorieren, die in einer Datei vorhanden sind, in der anderen jedoch fehlen.
Zum Beispiel
Datei1:
foo
bar
baz
bat
Datei2:
foo
ball
bat
Ich führe momentan den folgenden diff-Befehl aus
diff File1 File2 --changed-group-format='%>' --unchanged-group-format=''
Was in diesem Fall produzieren würde
bar
baz
als Ausgabe, dh nur fehlende oder widersprüchliche Zeilen. Ich möchte nur widersprüchliche Zeilen drucken, dh Fälle ignorieren, in denen eine Zeile in Datei2 fehlt und in Datei1 vorhanden ist (nicht umgekehrt). Gibt es eine Möglichkeit, so etwas mit diff zu tun, oder muss ich auf andere Tools zurückgreifen? Wenn ja, was würden Sie empfehlen?
comm
könnte der Befehl das tun, was Sie wollen (vorausgesetzt, er ist unter cygwin verfügbar)Antworten:
Sie können sich auch Folgendes ansehen
comm
, wenn Sie es zur Verfügung haben:Die Eingabedateien sollten sortiert sein. Sie können das Standardverhalten jedoch mit der Option --nocheck-order ändern, falls verfügbar.
In deinem Fall würdest du wollen
comm --nocheck-order -23 file filter_file
quelle
Wenn Sie Konflikt sagen, meinen Sie damit Einträge, die sowohl in Datei1 als auch in Datei2 erscheinen?
Verwenden Sie in diesem Fall Folgendes:
Erstellen Sie ein Shell-Skript mit dem Namen mycmopare.sh und fügen Sie das Folgende ein.
Führen Sie mycompare.sh in dem Verzeichnis aus, in dem File1 und File2 gespeichert sind.
Ausgabe:
quelle