
以下のような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