次の2つのファイルがあります:file1.txt
a 2019 15
b 2019 20
ファイル2.txt
a 2020 10
b 2019 15
file1の最初の列に基づいてfile1.txtとdiff bw 3番目の列(file1とfile2の)の望ましい出力)
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