대소문자를 구분하는 정렬의 경우 정렬이 이상하게 동작합니다.

대소문자를 구분하는 정렬의 경우 정렬이 이상하게 동작합니다.

정렬이 예상한 것과 다릅니다. 이 파일이 있습니다 text.txt. 이름을 다음과 같이 지정하세요.

a   1
A   1
a   11

(공간은 언제나 하나이다 \t)

첫 번째 열에서 알파벳순으로 정렬하고 싶습니다. 그러나 내가 할 때

sort -k 1 text.txt

내가 얻는 것은 정렬되지 않은 text.txt 파일뿐입니다. 더 이상 사용되지 않는 표기법으로 수행하면 + -의미합니다.

sort +0 -1 text.txt

예상대로 작동합니다. 즉, 다음과 같은 결과가 출력됩니다.

a   1
a   11
A   1

이 이상한 동작은 행이 대소문자만 다른 경우에만 발생합니다. 내가 뭘 잘못했나요?

답변1

끝 열도 지정해야 합니다.

$ sort -k1,1 text.txt
a       1
a       11
A       1

인용하다GNU 정렬 매뉴얼 페이지:

   -k, --key=POS1[,POS2]
          start a key at POS1 (origin 1), end it at POS2 (default  end  of
          line)

답변2

버그가 발생했을 것입니다 sort! 파일에 공백이 없으면 올바르게 정렬할 수 없습니다.

$ cat aaa
a1
A1
a11

$ sort aaa
a1
A1
a11

$ sort -k1,1 aaa
a1
A1
a11

이는 다음을 통해 더욱 분명해집니다.

$ cat bbb
A B b 0
a B b 0
A b b 1

$ sort bbb
a B b 0
A B b 0
A b b 1

$ sort -k1,2 bbb
a B b 0
A b b 1
A B b 0

관련 정보