2017-10-11 154 views
0

我想根據列值添加來自多行的各個條目。 例如輸入:基於列合併行linux

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命令作爲我使用找工作的用戶information.subsetting爲一個特定的列,其中PD是標準之一。

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作爲答案。

+0

後的實際樣品,你當前輸入不包含'PD'串 – RomanPerekhrest

+0

我編輯的問題。希望現在有意義。 –

+0

在列標題列「列5」中是否真的有空格? – RomanPerekhrest

回答

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 
+0

我編輯了這個問題。希望現在有意義。 –

+0

已更新,以符合更新的問題。 – randomir

+0

@KrithikaKrishnan,如果這個答案對你有幫助,請[考慮升級它,和/或接受它](https://stackoverflow.com/help/someone-answers)。謝謝! – randomir