diff に関数を適用することは可能ですか?

diff に関数を適用することは可能ですか?

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

関連情報