Ich möchte, dass (GNU) DIFF nur Zeilen druckt, die sich in einer Datei unterscheiden. So gegeben
==> diffa.txt <==
line1
line2 - in a only
line3
line4 changed
line5
==> diffb.txt <==
line1
line3
line4 changed in b
line5
line6 in b only
Ich würde gerne diff --someoption diffa.txt diffb.txt
produzieren
line2 - in a only
line4 changed
Folgendes scheint hilfreich zu sein, ist aber ein bisschen kryptisch:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
Antworten:
Ich
diff
bin mir nicht sicher, ob ich es alleine schaffen kann, aber Sie können immer die Leistung anderer GNU-Dienstprogramme nutzen, um Ihnen zu helfen.Es macht den Unterschied, wählt dann nur die Zeilen aus, die mit '-' beginnen - diese werden geändert und haben Werte aus der diffa.txt-Datei, dann
sed
entfernen Sie einfach diese '-' Zeichen.Bearbeiten: Nach ein paar Experimenten mit
diff
sieht es so aus, als würde der folgende Befehl das produzieren, was Sie wollen:quelle
--changed-group-format='%<'
ich jetzt tue ...Eine einfachere Methode ist die Verwendung des
comm
Linux-Dienstprogramms (für die Eingabe wird eine sortierte Datei benötigt). Es schreibt in die Standardausgabe:Zeilen, die für diffa.txt eindeutig sind
Zeilen, die für diffb.txt eindeutig sind
Linien, die häufig sind
und Sie können jeden von ihnen durch Parameter 1,2 oder 3 entsprechend unterdrücken. In deinem Fall sieht es also so aus:
comm -23 diffa.txt diffb.txt
Es unterdrückt Zeilen, die für diffb.txt eindeutig sind, und druckt Zeilen aus, die nur für diffa.txt eindeutig sind
Quelle von: https://www.tutorialspoint.com/unix_commands/comm.htm
quelle
diff
das, was ich erwartet habe. Und ich glaube, es ist sowohl auf BSD (dh Mac OS X) als auch auf Ubuntu vorinstalliert, also keine Paketmanager-Albträume.Ich möchte erwähnen,
comm
dass sortierte Eingabedateien und damit andere Ergebnisse als erwartetdiff
.ist universell. Ein großes Lob an @vava
quelle