Nicht sicher diff
allein kann es tun, aber Sie können immer die Kraft anderer GNU-Dienstprogramme nutzen, um Ihnen zu helfen.
diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'
Es führt den Unterschied aus und wählt dann nur die Zeilen aus, die mit '-' beginnen - diese werden geändert und haben Werte aus der Datei diffa.txt, dann sed
Entfernen Sie einfach diese '-'-Zeichen.
Bearbeiten: Nach einigen Experimenten mit diff
, sieht so aus, als ob der folgende Befehl erzeugt, was Sie wollen:
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
Eine einfachere Methode ist die Verwendung von comm
Linux-Dienstprogramm (Es benötigt eine sortierte Datei für die Eingabe). Es schreibt auf die Standardausgabe:
-
Zeilen, die für diffa.txt einzigartig sind
-
Zeilen, die für diffb.txt eindeutig sind
-
Linien, die häufig vorkommen
und Sie können jeden von ihnen durch Parameter 1,2 oder 3 entsprechend unterdrücken. In Ihrem Fall sieht es also so aus:
comm -23 diffa.txt diffb.txt
Es unterdrückt Zeilen, die für diffb.txt eindeutig sind, Zeilen, die häufig vorkommen, und gibt Zeilen aus, die nur für diffa.txt eindeutig sind
Quelle von: https://www.tutorialspoint.com/unix_commands/comm.htm
Ich möchte diesen comm
erwähnen erwartet sortierte Eingabedateien und meldet daher andere Ergebnisse als diff
.
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
ist universell. Hut ab vor @vava