여러 파일을 비교하고 더 큰 값과 파일 이름을 인쇄합니다.

여러 파일을 비교하고 더 큰 값과 파일 이름을 인쇄합니다.

다음 형식의 파일이 약 2000개 있습니다.

파일: WHWH-19975612.txt

0.1   70  30
0.01  70  32
0.9   72  32
...

파일 B: WHWH-20004526.txt

0.2   70 30
0.001 70 32
1.0   72 32
...

원하는 출력

0.2  70 30  WHWH-20004526
0.01 70 32  WHWH-19975612
1.0  72 32  WHWH-20004526
...

이렇게 하면 더 큰 값이 존재하는 파일을 추적할 수 있으므로 추가 처리가 필요할 수 있습니다.

답변1

파일 수가 한 번의 호출에 적합하다면 awk다음을 수행할 수 있습니다.

awk '{ if ($1 > maxvalues[$2" "$3]) { 
         maxvalues[$2" "$3]=$1; 
         maxfiles[$2" "$3]=FILENAME; 
       }
     } 
     END { 
       for (i in maxvalues) printf "%-4s %5s %s\n", maxvalues[i], i, maxfiles[i] 
    }' \
    *

샘플 데이터를 사용하여 테스트 파일 세트를 만든 후 다음을 실행했습니다.

for((i=20004527;i<20006526;i++))
do 
  cp WHWH-20004526.txt WHWH-${i}.txt
done

...사용 가능한 약 2000개의 데이터 파일을 생성합니다.

관련 정보