Vergleichen zweier Dateien im Linux-Terminal
Gibt es zwei Dateien namens " "a.txt" und "b.txt" beide haben eine Liste von Wörtern. Jetzt möchte ich überprüfen, welche Wörter sind extra in "a.txt" und sind nicht in "b.txt".
Brauche ich einen effizienten Algorithmus, da muss ich den Vergleich von zwei Wörterbüchern.
Kommentar zu dem Problem - Öffnen
diff a.txt b.txt
ist nicht genug? Können die Wörter, die mehrfach vorkommen in jeder Datei? Können Sie die Dateien Sortieren?
ich brauche nur die Wörter, die nicht in "b.txt" und sind in a.txt
InformationsquelleAutor der Frage Ali Imran | 2013-01-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie vim installiert haben,versuchen Sie dies:
oder
finden Sie es fantastisch.
InformationsquelleAutor der Antwort larry
Sortieren Sie Sie und verwenden Sie
comm
:comm
vergleicht (sortiert) input-Dateien und standardmäßig Ausgänge drei Spalten: Zeilen, die einzigartig sind, zu einem, Zeilen, die nur in b, und die Linien sind in beiden vorhanden. Durch die Angabe-1
,-2
- und/oder-3
können Sie unterdrücken den entsprechenden Ausgang. Dahercomm -23 a b
listet nur Einträge, die eindeutig sind. Ich benutze die<(...)
syntax zum Sortieren der Dateien on-the-fly, wenn Sie bereits sortiert sind, braucht es diese nicht.InformationsquelleAutor der Antwort Anders Johansson
Können Sie
diff
tool unter linux zum vergleichen von zwei Dateien. Sie können --geändert-group-format und --unverändert-group-format Optionen zum filtern erforderlichen Daten.Folgenden drei Optionen auswählen können, um die relevante Gruppe für jede option:
'%<' get-Zeilen aus DATEI1
'%>' get-Zeilen aus DATEI2
" (leerer string) zum entfernen von Zeilen aus beiden Dateien.
InformationsquelleAutor der Antwort Manjula Weerasinge
Versuchen
sdiff
(man sdiff
)InformationsquelleAutor der Antwort mudrii
Wenn Sie lieber die Ausgabe von diff-Stil aus
git diff
verwenden, können Sie es mit der--no-index
flag zu vergleichen, Dateien, die nicht in einem git-repository:Mithilfe von ein paar Dateien mit rund 200k Datei-name Saiten in jeder, die ich getestet (mit dem eingebauten
time
Befehl) dieser Ansatz vs einige der anderen Antworten hier:comm
scheint der Schnellste zu sein, bei weitem, währendgit diff --no-index
scheint der Schnellste Ansatz für diff-Stil Ausgabe.Update 2018-03-25 kann Man eigentlich weglassen
--no-index
Flagge, es sei denn, Sie sind in einem git-repository und vergleichen möchten nicht verfolgte Dateien in diesem repository. Von die man-Seiten:InformationsquelleAutor der Antwort Joel Ostblom
Können Sie auch verwenden: colordiff: Zeigt die Ausgabe des diff-Farben.
Über vimdiff: Es erlaubt Ihnen, vergleichen von Dateien per SSH, zum Beispiel :
Extrahiert aus: http://www.sysadmit.com/2016/05/linux-diferencias-entre-dos-archivos.html
InformationsquelleAutor der Antwort FindlinuxOne
Verwenden
comm -13
(erfordert sortiert Dateien):InformationsquelleAutor der Antwort Chris Seymour
Vergessen Sie auch nicht über mcdiff - Interne diff-viewer von GNU Midnight Commander.
Beispiel:
Genießen!
InformationsquelleAutor der Antwort Iurii Golskyi
Hier ist meine Lösung dazu :
InformationsquelleAutor der Antwort Ali Imran