이것은 이 질문에 대한 후속 조치입니다.숫자가 아닌 값에 대해 sort -n은 무엇을 합니까?
이것은 내 입력입니다.
1-----***
R----****
1---*****
그런 다음 나는 다음을 실행했습니다.
sort -k 1.2,1.9n input.txt > output.txt
이것은 내 결과입니다.
1-----***
1---*****
R----****
내 예상 결과:
1---*****
R----****
1-----***
*(42)의 ASCII 값이 -(45)의 값보다 작기 때문에 이 출력이 예상됩니다. 다만, 정렬에서 R을 고려하고 있는 것 같은데, 1.2,1.9는 배제할 것 같습니다. 내가 뭘 잘못했나요?
답변1
사용 중인 정렬 키가 유효하지 않습니다(입력 텍스트와 일치하지 않기 때문에 유효하지 않습니다). 정렬 정보 매뉴얼에서는 이 --debug
옵션을 사용하여 키 일치 동작을 조사할 것을 권장합니다. command 키를 사용하여 1.2,1.9n
sort하면 다음 출력이 생성됩니다.
% sort -k 1.2,1.9n --debug input.txt
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
^ no match for key
_________
1---*****
^ no match for key
_________
R----****
^ no match for key
_________
전체 필드의 기본 정렬을 사용하는 것으로 대체되는 것 같습니다. n
키를 생략 하고 그냥 사용하면 1.2,1.9
다음과 같은 결과가 나타납니다.
% sort -k 1.2,1.9 --debug input.txt
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
________
_________
R----****
________
_________
1---*****
________
_________
정렬 작업을 위해 첫 번째 필드의 2~9번째 문자를 올바르게 사용합니다.