정렬 또는 오해의 버그

정렬 또는 오해의 버그

이 파일이 있다고 가정하자

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 bara 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

관련 정보