2014-04-30 43 views
0

一個文件,其中有3列,tab分隔。我想從第3列(與第1列相同的名稱)中選擇最高值並打印爲第4列。
在表中選擇最高值

輸入文件

A  l  10 
A  l  2 
A  m  6 
B  l  12 
B  m  13 
B  n  7 
C  l  9 
C  l  8 
C  n  19 

輸出文件

A  l  10  10 
A  l  2  10 
A  m  6  10 
B  l  12  13 
B  m  13  13 
B  n  7  13 
C  l  9  19 
C  l  8  19 
C  n  19  19 

可否請你建議的awk,sed的或命令。由於

+1

這些數字總是正數嗎? – Ashkan

+0

來自@Ashkan的優秀,富有洞察力的解決方案影響問題! –

回答

1

您可以使用此awk

awk 'FNR==NR {arr[$1]=arr[$1]>$3?arr[$1]:$3;next} {print $0,arr[$1]}' OFS="\t" file{,} 
A  l  10  10 
A  l  2  10 
A  m  6  10 
B  l  12  13 
B  m  13  13 
B  n  7  13 
C  l  9  19 
C  l  8  19 
C  n  19  19 

這越過file兩次。第一次找到最高,旁邊打印。
file{,}使文件名加倍。您也可以使用file file

+0

謝謝。這是工作。 – firoz