2014-04-30 6 views
0

탭이 분리 된 3 개의 열이있는 파일. 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 제안 시겠어요, 또는 나오지도 명령. 감사합니다

+1

이 숫자는 항상 양수입니까? – Ashkan

+0

@Ashkan의 우수하고 통찰력 있고 솔루션에 영향을 미치는 질문! –

답변

1

당신이이 file 이상 두 번 전달이 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{,}은 파일 이름을 double로 만듭니다. 대신 file file을 사용할 수도 있습니다.

+0

감사합니다. 그것은 효과가있다. – firoz

관련 문제