이 파일이 있다고 해봅시다.리눅스 정렬 명령으로 복수 키로 정렬
$ cat a.txt
c 1002 4
f 1001 1
d 1003 1
a 1001 3
e 1004 2
b 1001 2
두 번째 열로 정렬 한 다음 세 번째 열로 정렬하려고합니다. 두 번째 열은 숫자이며, 세 번째 열은 문자열로 처리 할 수 있습니다. 나는 다음 명령이 잘 작동한다는 것을 안다.
$ sort -k2,2n -k3,3 a.txt
f 1001 1
b 1001 2
a 1001 3
c 1002 4
d 1003 1
e 1004 2
그러나 나는 그렇다고 생각하지만 sort -k2n a.txt
도 작동해야합니다.
$ sort -k2n a.txt
a 1001 3
b 1001 2
f 1001 1
c 1002 4
d 1003 1
e 1004 2
열 2로 정렬 한 다음 열 3 대신에 1을 정렬하는 것과 같습니다. 왜 이런 일이 일어나는 걸까요? 벌레인가 아닌가? 위의 데이터는 숫자가 고정 너비이므로 원인은 sort -k2 a.txt
입니다.
내 정렬 버전은 cygwin에서 sort (GNU coreutils) 8.15
입니다.
흥미 롭습니다. 'sort -k2 a.txt'는 * this * case에서 작동합니다. '-k2'는 필드 2에서 시작하여 줄 끝까지 키를 사용하여 정렬하도록 지시합니다. '-k2n'은 필드 2를 숫자 순서로 정렬하도록 알려줍니다. 필드 2와 3 사이의 공백 문자를 만나면 정렬 키가 끝난다는 것을 의미합니다. 정렬에 대한 버전을 어딘가에 붙여 넣는 것이 좋습니다. –
'sort (GNU coreutils) 8.5 '를 사용하여 설명 된 동작을 데비안 안정적으로 재현 할 수 있습니다. – alk
@ MikeSherrill'Catcall '숫자가 아닌 값을 숫자로 정렬하려고하면 sort (1)이 문자열 정렬로 돌아갑니다. ''1001 3 "'등은'-k2n'과 같이 * not * 숫자입니다. – PointedEars