아래와 비슷한 이름을 가진 파일이 포함된 디렉토리가 있습니다.
mi001
mi002
...
mi034
...
제가 하고 싶은 것은 14열에서 가장 높은 값을 찾는 것입니다. 그런 다음 가장 높은 값을 가진 전체 줄을 출력 파일에 추가하고 싶습니다. 최종 결과로 각 원본 파일의 맨 위 줄이 포함된 출력 파일이 필요합니다.
샘플 파일
c1 | c2 | ... | c14 | c15 |
---|---|---|---|---|
1 | ㅏ | ... | 5 | 0.5 |
2 | 티 | ... | 4 | 0.9 |
답변1
간단한 방법은 파일을 정렬하고 각 파일에서 마지막 줄을 선택하는 것입니다. 예를 들어,
for file in mi*
do
sort +13 -n $file | tail -1
done > result
+13
열 14를 정렬하여 -n
번호 순서대로 정렬합니다.
그래도 작동하지 않으면 +13
정렬 문을 다음으로 바꿀 수 있습니다.
sort -k14,14 -n $file | tail -1
답변2
제공한 희박한 정보에 따라 awk
다음과 같이 작동합니다(공백 또는 탭으로 구분된 필드 가정).첫 번째 행의 제목):
awk 'NR == 2 {totmax=$14 ; maxline=$0 ; filemax[FILENAME]=$14 ; fileline[FILENAME]=$0}
FNR>1 && $14 > totmax {maxline=$14; totmax=$14}
FNR>1 && ($14 > filemax[FILENAME] || !filemax[FILENAME]) {filemax[FILENAME]=$14 ; fileline[FILENAME]=$0 }
END {print "line with total maximum:\n"maxline
print "maximums for files:"
for (file in filemax) {print file":",fileline[file]}}' mi*