데이터는 다음과 같습니다.
D 2
B 2
A 2
이 명령을 실행할 때:
sort -k2,2 file
다음과 같이 출력됩니다.
A 2
B 2
D 2
내 질문은 두 번째 열만 지정할 때 -k2,2
첫 번째 열을 기준으로 정렬하는 이유는 무엇입니까? 두 번째 열의 값은 모두 동일하므로 그대로 유지해야 합니다.
답변1
이것은최후의 수단 비교. 두 행을 비교할 때 모든 키가 동일하다고 비교되면 최후의 수단으로 전체 행에 대해 기본 문자열 비교가 수행됩니다( -r
여전히 적용되지만 다른 옵션은 적용되지 않음). 이 동작은 다음으로 인해 발생합니다.POSIX:
-u 옵션이 지정되지 않는 한, 같음을 비교하는 행은 -d, -f, -i, -n 또는 -k 옵션이 없는 순서로 정렬되어야 합니다(그러나 옵션이 있는 경우 -r은 여전히 유효합니다). 지정) 및 모든 바이트의 행은 비교에 중요합니다. 행이 동일한지 비교되는 순서는 지정되지 않은 순서로 기록됩니다.
GNU의 경우 sort
/ -s
옵션 을 사용하여 --stable
마지막 비교를 비활성화할 수 있습니다 .
¹ GNU에서 사용하는 정렬 알고리즘이 sort
다르기 때문에안정적인이므로 마지막 비교를 비활성화하면 안정적인 정렬이 이루어집니다. .