2013-12-16 68 views
-4

我想實現從下面輸入文件東西input.txt中解析文件命令

[email protected] 8 10 
[email protected] 9 11 
[email protected] 2 6 
[email protected] 2 7 
[email protected] 8 5 
[email protected] 3 5 

現在我想op.txt

[email protected] 38 
[email protected] 21 
[email protected] 17 

說明:
1)只需要一個記錄(電子郵件)一次。
2)對於相同電子郵件ID的所有記錄,需要第2列+第3列($ 2 + $ 3)的總和。
例如:
文件包含的[email protected]

[email protected] 8 10 
    [email protected] 9 11 

這樣,第一線(8 + 10)加上第二行的總和(9 + 11)等於38
如果兩個項一個shell腳本更可行,那麼我可以去那個。

編輯:
我曾嘗試下面的命令,但我不知道如何整合兩者,因爲第一個發現的特定關鍵詞的總和:

cat input.txt | grep "[email protected]" | awk '{print $1+$2}'|paste -sd+ | bc 


而這一次發現對於第一列的唯一條目:

cat input.txt |awk '{print $1}'|uniq 
+4

首先,親自嘗試一下,看看你想出了什麼。然後我們可以幫助你。其次,我不明白「用awk命令在perl中」是什麼意思。 –

+4

'(8 + 10)+(9 + 11)'是38,而不是28. [email protected]的期望值也是錯誤的。 –

+0

@ F.J抱歉我的錯誤編輯了這個問題。 – Ganesh

回答

0
awk '{ 
    a[$1]+=$2+$3 
} 
END { 
    for (i in a) 
     print i, a[i] 
}' input.txt > op.txt 
0

如果input.txt中有更多的列被添加,該命令會更有用。

AWK '{對於(ⅰ= 2;我< = NF;我++)一個[$ 1] + = $ I} END {對於(I a)中打印I,A [1]}' 的infile