키 수보다 많은 항목을 정렬하려면 -k를 사용하세요.

키 수보다 많은 항목을 정렬하려면 -k를 사용하세요.

sort 명령을 통해 프로젝트에 사용된 기존 스크립트를 이해하려고 합니다.

sort -t= -nr -k3 nos 

nos997 998 999 1000과 같은 공백과 숫자가 포함된 파일은 어디에 있습니까 ?

출력은 다음과 같습니다

999
998
997
1000

마지막에 1000이 왜 나오는지 이해가 안가네요. 항목당 키가 하나만 있을 때 매개변수 때문인 것으로 의심되지만 -k3문서에서 지정된 키 위치가 없을 때 어떻게 작동하는지 설명하는 내용을 찾을 수 없습니다.

이는 파일에 4자리 숫자가 포함될 때까지 숫자를 숫자 내림차순으로 정렬하는 예상 결과를 제공합니다.

답변1

존재하지 않는 정렬 필드를 지정하면 sort존재하는 모든 비교에 대해 정렬 키가 비어 있게 됩니다. 즉, 키 비교는 항상 동일합니다. 그러면 다음 중 일부가 실행됩니다.기준sort이는 다음을 의미합니다.전반적으로정렬 키로 사용해야 하며 옵션 -d, -f, -i또는 효과 -n-k없습니다.

이는 명령이 다음과 동일한 효과를 갖는다는 것을 의미합니다.

sort -r nos

데이터의 역사전식 정렬을 수행합니다( -t=여기에서는 작동하지 않음). 순서가 먼저 나오므로 역순으로 먼저 옵니다 997.100091


POSIX 표준의 관련 비트:

-k keydef

[...]

이 옵션을 지정하지 않으면 같음을 비교하는 행은 , , 또는 -u옵션이 없는 것처럼 정렬되어야 하며 (지정된 경우 여전히 유효함) 행의 모든 ​​바이트를 비교해야 합니다. 여전히 같음을 비교하는 행의 쓰기 순서가 지정되지 않았습니다.-d-f-i-n-k-r

관련 정보