Ich produziere zunächst zwei Dateien, die Listen von URLs enthalten - ich werde sie als old
und bezeichnen new
. Ich möchte die beiden Dateien vergleichen und wenn die URL URLs new
enthält, die nicht in der old
Datei enthalten sind, möchte ich, dass diese in einer extra_urls
Datei angezeigt werden.
Jetzt habe ich einige diff
Informationen zur Verwendung des Befehls gelesen, aber soweit ich das beurteilen kann, wird auch die Reihenfolge der Informationen analysiert. Ich möchte nicht, dass die Reihenfolge Auswirkungen auf die Ausgabe hat. Ich möchte nur, dass die zusätzlichen URLs in new
die extra_urls
Datei gedruckt werden, unabhängig davon, in welcher Reihenfolge sie in einer der beiden anderen Dateien platziert sind.
Wie kann ich das machen?
quelle
diff
wird das Gleiche tun, oder?diff
zeigt alle Unterschiede.comm
Mit dieser Option können Sie auswählen, ob die Zeilen aus Datei 1, Datei 2 oder die gemeinsamen Zeilen angezeigt werden sollen.bash
läuft es? Die Prozessersetzung wird möglicherweise nicht unterstützt.Ich würde nur verwenden
grep
:Erläuterung
-f
: weistgrep
an, seine Suchmuster aus einer Datei zu lesen. In diesem Fallold
.-v
: Weist grep an, die Übereinstimmung umzukehren und nur nicht übereinstimmende Zeilen zu drucken.-F
: Weist grep an, seine Suchmuster als Zeichenfolgen und nicht als reguläre Ausdrücke zu interpretieren. Auf diese Weise wird die.
URL buchstäblich abgeglichen.Zusammen lassen diese
grep
Zeilen druckennew
, die nicht vorhanden warenold
. Die Reihenfolge der URLs in der Datei ist irrelevant.quelle
-F
für einfache Textmuster hinzufügenDa die Reihenfolge für Sie wichtig ist, verwenden Sie
awk
quelle
> extra
zu| sort > extra
. oder| sort -u > extra
wenn Sie möchten, dass eine neue URL nur einmal in der Ausgabe angezeigt wird, unabhängig davon, wie oft sie in der Eingabe enthalten ist. Die Eingabereihenfolge kann sich auf die Ausgabereihenfolge auswirken, es sei denn, Sie führen irgendwo auf dem Weg zusätzliche Arbeiten aus, um dies zu verhindern.comm
ist die beste Antwort auf diese Frage, obwohlgrep -Fvf
es auch gut istIch habe eine Anwendung namens meld. Es ermöglicht das Anzeigen der zwei (oder drei) Dateien nebeneinander, zeigt die Unterschiede und ermöglicht das selektive Kopieren von einem zum anderen oder das Löschen von Zeichen.
Meld kann von einem Terminal mit installiert werden
quelle