다음 필드가 포함된 파일이 있습니다.
NM001 rp1 210
NM003 rp1 220
NM005 rag 200
NM004 rag 100
열 2의 각 변경 사항에 대해 열 4에서 최대값을 찾고 해당 열 1도 보고하는 출력을 갖고 싶습니다. 지금까지 열 2와 3은 보고하지만 열 1의 숫자가 다르기 때문에 열 1은 보고하지 않는 솔루션을 찾았습니다. 나는 awk를 사용하는 것을 좋아합니다.
출력은
NM003 rp1 220
NM005 rag 200
답변1
awk를 사용하면 쉽습니다.
두 번째 열에 있는 각 값의 최대값을 추적해야 하며, 또한 각 전체 행을 최대값으로 유지하려고 합니다.
awk '
$3 > maxvals[$2] {lines[$2]=$0; maxvals[$2]=$3}
END { for (tag in lines) print lines[tag] }
'
출력은 정렬되지 않았으므로 sort
특정 순서가 필요한 경우 입력을 파이프하십시오.
답변2
sort
다음 도구를 사용해 보세요 uniq
.
sort -k3,3nr infile |
awk '{ print $1" " $3" " $2 }' |
uniq -f2 | awk '{ print $1" " $3" " $2 }' > outfile