첫 번째 열로만 정렬

첫 번째 열로만 정렬

아래 입력 파일의 지정된 옵션에 대해 정렬이 아무 것도 수행되지 않는 경우 두 번째 및 세 번째 줄이 변경되는 이유는 무엇입니까?

$ 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추가할 수 있습니다 . -sGNU 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)

관련 정보