GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Werkzeug, um die Zeilen in einer Datei zu erhalten, die nicht in einer anderen sind?

Gibt es ein Tool, das Zeilen abrufen kann, die Datei A enthält, Datei B jedoch nicht? Ich könnte z. B. mit Perl ein kleines einfaches Skript erstellen, aber wenn so etwas bereits existiert, spare ich mir von jetzt an Zeit.

Akzeptierte Antwort:

Ja. Das standardmäßige grep Werkzeug zum Durchsuchen von Dateien nach Textzeichenfolgen kann verwendet werden, um alle Zeilen in einer Datei von einer anderen zu subtrahieren.

grep -F -x -v -f fileB fileA

Dies funktioniert, indem jede Zeile in DateiB als Muster verwendet wird (-f fileB ) und behandelt es als einfachen String zum Abgleichen (kein regulärer regulärer Ausdruck) (-F ). Sie erzwingen, dass die Übereinstimmung auf der gesamten Zeile erfolgt (-x ) und nur die Zeilen ausgeben, die nicht übereinstimmen (-v ). Daher drucken Sie die Zeilen in DateiA aus, die nicht die gleichen Daten wie eine Zeile in DateiB enthalten.

Der Nachteil dieser Lösung ist, dass die Zeilenreihenfolge nicht berücksichtigt wird und wenn Ihre Eingabe doppelte Zeilen an verschiedenen Stellen enthält, erhalten Sie möglicherweise nicht das, was Sie erwarten. Die Lösung dafür ist die Verwendung eines echten Vergleichstools wie diff . Sie könnten dies tun, indem Sie eine Diff-Datei mit dem Kontextwert von 100 % der Zeilen in der Datei erstellen und sie dann nur auf die Zeilen parsen, die entfernt würden, wenn Datei A in Datei B konvertiert würde. (Beachten Sie auch diesen Befehl entfernt die Diff-Formatierung, nachdem sie die richtigen Zeilen erhalten hat.)

diff -U $(wc -l < fileA) fileA fileB | sed -n 's/^-//p' > fileC

Linux
  1. 8 gruselige Befehle, die das Terminal heimsuchen

  2. Wie erhält man die Md5-Summe des Inhalts eines Verzeichnisses als eine Summe?

  3. Wann kommt die Fehlermeldung „jobs :Not Found“?

  4. Rackspace Cloud Server-Funktionen, die auf der Fortigate-VM nicht verfügbar sind

  5. Wie verwende ich die Zeilen einer Datei als Argumente eines Befehls?

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Der Unterschied zwischen einem eingebauten Befehl und einem, der es nicht ist?

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

Wie man nur die Anzahl der Zeilen einer Datei erhält

So erhalten Sie MAC-Adressen von Geräten, die sich nicht im Netzwerk befinden

Wie bekomme ich Zeilen, die eine Zeichenfolge in einer Datei enthalten?