Unterschiede in zwei Dateien finden

Unterschiede in zwei Dateien finden

Ich habe zwei Dateien wie unten: file1.txt

a 2019 15
b 2019 20

Datei2.txt

a 2020 10
b 2019 15

Gewünschter Ausgabeinhalt von Datei1.txt und Differenz zwischen den dritten Spalten (aus Datei1 und Datei2) in Bezug auf die erste Spalte aus Datei 1)

  a 2019 5
  b 2019 5

Antwort1

Hier ist ein Einzeiler dazu.

join file1.txt file2.txt | awk '{print $1,$2,$3-$5}'

Der joinBefehl fügt zunächst die relevanten Werte in derselben Zeile zusammen, und zwar wie folgt:

[gnubeard@mothership: ~/diffy]$ join file{1,2}.txt
a 2019 15 2020 10
b 2019 20 2019 15

Dann awkdruckt es die erste Spalte ( $1, zB a), die zweite Spalte ( $2, zB 2019) und den Wert der dritten Spalte abzüglich des Werts in der fünften Spalte ( $3-$5, zB 15 - 10).

Das Ergebnis scheint mit der gewünschten Ausgabe übereinzustimmen:

[gnubeard@mothership: ~/diffy]$ join file{1,2}.txt | awk '{print $1,$2,$3-$5}'
a 2019 5
b 2019 5

verwandte Informationen