Unix で diff 関数を使用すると、次のようなケースが可能なのだろうか。
1行あるとしましょう
1234 1 2
そして1つのファイルには
1234 2 3
たとえば、1234 は pid、2 はディスク使用量、3 は CPU 使用量を表します。diff 関数を使用して、自分の行をファイル内の行と「マージ」し、その場で合計関数を適用して、次の最終出力を得ることは可能ですか? (pid はマージ キーです)
1234 3 5
(3は1と2の合計、5は2と3の合計)
答え1
いいえ、diff
算術計算はできません。awk
次のように使用します。
awk '{ grouping_disks[$1]+=$2; grouping_cpus[$1]+=$3 }
END{
for(indx in grouping_disks)
print indx, grouping_disks[indx], grouping_cpus[indx]
}' file1 file2 fileN