2つのファイルの違いを見つける

2つのファイルの違いを見つける

以下のような2つのファイルがあります: file1.txt

a 2019 15
b 2019 20

ファイル2.txt

a 2020 10
b 2019 15

file1.txt の必要な出力内容と、3 番目の列 (file1 と file2 から) の diff。ファイル 1 の最初の列に関して)

  a 2019 5
  b 2019 5

答え1

これを行うためのワンライナーを次に示します。

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

このjoinコマンドは、まず関連する値を次のように同じ行にまとめます。

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

次に、awk最初の列 ( $1、例a)、2 番目の列 ( $2、例2019)、および 3 番目の列の値から 5 番目の列の値を引いた値 ( $3-$5、例15 - 10)を出力します。

結果は希望の出力と一致しているようです:

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

関連情報