diffに機能を適用する - 可能ですか?

diffに機能を適用する - 可能ですか?

Unixでdiff関数を使用すると、次のような状況が可能かどうかを知りたいと思います。

1行があるとしましょう。

1234 1 2

そして、以下を含むファイル

1234 2 3

たとえば、1234はpidを表し、2はディスク使用量、3はCPU使用量を表します。 diff関数を使用して私の行をファイルの行と「マージ」し、sum関数を動的に適用して次の最終出力を取得できますか? (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

関連情報