정렬이 동일한 정렬 키로 줄 순서를 변경하는 이유는 무엇입니까?


31

데이터는 다음과 같습니다.

D 2
B 2
A 2

이 명령을 실행할 때 :

sort -k2,2 file

출력 :

A 2
B 2
D 2

내 질문은 두 번째 열만 지정할 때 -k2,2첫 번째 열을 기준으로 정렬하는 이유는 무엇입니까? 두 번째 열의 모든 값이 동일하므로 그대로 두어야합니다.


7
[Semi-OT] : 정렬 키가 일치 할 때 입력 순서를 유지하는 정렬 인 FYI는 컴퓨터 과학에서 안정적인 정렬 로 알려져 있습니다. 많은 불안정한 정렬 알고리즘이 더 빠르거나 단순하기 때문에 정렬이 안정적이지 않은 경우가 많습니다. 여기서는 아니지만 CS 용어를 알면 -s옵션에 대한 맨 페이지 문서를 이해하고 찾을 수 있습니다.
derobert

답변:


34

이것이 최후의 수단 비교 입니다. 두 줄을 비교할 때 모든 키가 동일한 경우 마지막 수단으로 전체 줄의 기본 문자열 비교가 수행됩니다 ( -r여전히 적용되지만 다른 옵션은 적용되지 않음). 이 동작은 POSIX에 의해 지정됩니다 .

-u 옵션이 지정된 경우를 제외하고, 동일하게 비교하는 행은 -d, -f, -i, -n 또는 -k 옵션이없는 것처럼 정렬됩니다 (그러나 -r이 여전히 유효한 경우 그것은 지정되었다) 라인의 모든 바이트와 비교에 중요한. 여전히 동일하게 비교되는 행이 작성되는 순서는 지정되지 않습니다.

GNU를 sort사용하면 -s( 안정적인 ) 옵션 을 사용하여 마지막 복원 비교를 비활성화 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.