在 diff 上應用函數 - 可能嗎?

在 diff 上應用函數 - 可能嗎?

我想知道在 Unix 中使用 diff 函數是否可能出現以下情況。

假設我有一行

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

相關內容