이 파일이 있다고 가정하자
b 10 foo
a 10 bar
a 2 bar
세 번째 열을 알파벳순으로 정렬하고 싶습니다. 동률인 경우 두 번째 열을 기준으로 숫자별로 정렬하고 싶습니다. 유닉스 정렬 프로그램의 매뉴얼 페이지에서 다음을 찾을 수 있습니다:
> sort -k3 -k2n a
어느 것이
a 2 bar
a 10 bar
b 10 foo
맞습니다.
이제 제가 실제로 원하는 것은 첫 번째 열을 기준으로 알파벳순으로 정렬하고 동점인 경우 두 번째 열을 기준으로 숫자순으로 정렬하는 것입니다. 왜 나에게 설명할 수 있는 사람이 있나요?
> sort -k1 -k2n a
준다
a 10 bar
a 2 bar
b 10 foo
어느 것이 명백히 잘못된 것입니까?
답변1
귀하의 예가 예상대로 작동하지 않는 이유는 sort
모든 위치를 고려하기 때문입니다.~ 후에그것도 지정된 것. 귀하의 예에서 사전은 이전에 -k1
문자열을 정렬하므로 타이 브레이크가 필요하지 않습니다.a 10 bar
a 2 bar
매뉴얼 페이지에 설명된 대로 정렬 키의 제한을 명시적으로 지정해야 합니다.
-k, --key=POS1[,POS2]
start a key at POS1, end it at POS2 (origin 1)
예:
$ sort -k1,1 -k2n theFile
a 2 bar
a 10 bar
b 10 foo