基于列linux合并行

时间:2017-10-11 19:25:56

标签: linux awk

我想根据列值添加多行中的各个条目。 示例输入:

column 4  column 5    column 7
abc           PD      8
xyz           PD      1
abc           PD      2
xyz           PD      7
xyz           PD      3

预期产出:

column 4  column 5    column 7
abc           PD      10
xyz           PD      11

我尝试使用squeue命令,因为我正在使用查找作为标准之一的特定列的作业用户信息.cubsetting。

squeue | tr -s ' ' | awk '($4 == "PD")' | cut -d ' ' -f4,5,7 | awk '{a[$4]+=$7}END{for (i in a) print i,a[i]}'

我得到0作为答案。

1 个答案:

答案 0 :(得分:0)

cut之后,您将awk输入减少到只有3列,然后继续使用$4$7字段。

一个awk程序可以替换您的完整管道:

$ awk '$5=="PD" {a[$4]+=$7} END{for(i in a) print i,$5,a[i]}' merge 
abc PD 10
xyz PD 11