아래 입력 파일의 지정된 옵션에 대해 정렬이 아무 것도 수행되지 않는 경우 두 번째 및 세 번째 줄이 변경되는 이유는 무엇입니까?
$ cat test1
1 4
2 5
2 1
3 6
$ sort -n -k 1,1 test1
1 4
2 1
2 5
3 6
답변1
정렬 키 사양에 따라 동일하게 비교할 때 전체 행을 어휘적으로 비교하는 최종 비교 방법입니다.
GNU 구현을 사용하면 최종 비교를 비활성화하는 옵션을 sort
추가할 수 있습니다 . -s
GNU sort
정렬 알고리즘은 다음과 같습니다.안정적인, 입력에 원래 순서가 표시되므로 다음과 같습니다.
sort -s -n -k1,1
그렇지 않으면:
sort -sn
(비교는 숫자이므로 행 전체를 숫자로 변환하든, 첫 번째 필드를 숫자로 변환하여 비교하든 별 차이가 없습니다.)
답변2
디버그 옵션으로 실행합니다. 첫 번째 밑줄은 기본 정렬이고 다음은 보조 정렬입니다.
sort -n -k1,1 --debug test1
sort: text ordering performed using simple byte comparison
1 4
_
___
2 1
_
___
2 5
_
____
3 6
_
___
두 번째 밑줄은 첫 번째 필드에서 시작됩니다.
이해하기 쉽도록 다음과 같이 이해하면 됩니다.
1 (1 4)
2 (2 1)
2 (2 5)
3 (3 6)