다음과 같은 줄이 포함된 파일이 있습니다.
8 GeodeticCorrosiveness-4096
8 MetricalDrosky-4096
8 UncontrovertiblePhoebus-4096
9 FlabbyAutochthones-4096
9 UndispensedCreeds-4096
9 WaltonianAtomicities-4096
10 AtheismDuumvirate-4096
10 HeliocentricAllative-4096
10 HepaticPhaedra-4096
11 High-speedBuchan-4096
나는 다음과 같은 것을 만들고 싶습니다 :
8 8 GeodeticCorrosiveness-4096
8 8 MetricalDrosky-4096
8 8 UncontrovertiblePhoebus-4096
5 9 FlabbyAutochthones-4096
5 9 UndispensedCreeds-4096
5 9 WaltonianAtomicities-4096
2 10 AtheismDuumvirate-4096
2 10 HeliocentricAllative-4096
2 10 HepaticPhaedra-4096
1 11 High-speedBuchan-4096
즉, 첫 번째 열을 기준으로 내림차순으로 정렬했을 때 각 행을 순서대로 분류한 것입니다. 쉘 스크립트가 이를 수행하는 데 도움이 될 수 있는 것이 유닉스에 있습니까?
답변1
sort
이는 다음을 수행하는 짧은 awk 스크립트처럼 보입니다 .
$ sort -srn file.txt | awk '{if ($1 != prev) num=NR; print num, $0; prev=$1}' | sort -srn
8 8 GeodeticCorrosiveness-4096
8 8 MetricalDrosky-4096
8 8 UncontrovertiblePhoebus-4096
5 9 FlabbyAutochthones-4096
5 9 UndispensedCreeds-4096
5 9 WaltonianAtomicities-4096
2 10 AtheismDuumvirate-4096
2 10 HeliocentricAllative-4096
2 10 HepaticPhaedra-4096
1 11 High-speedBuchan-4096
두 호출 모두 sort
먼저 목록을 정렬하고 마지막으로 반전시키는 반면 awk 스크립트는 첫 번째 필드를 보고 변경되었는지 확인하고 새 값이 표시된 마지막 줄 번호를 인쇄합니다.