무슨 일을 하고 있는 거야?

무슨 일을 하고 있는 거야?

이것은 이 질문에 대한 후속 조치입니다.숫자가 아닌 값에 대해 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.9nsort하면 다음 출력이 생성됩니다.

% 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번째 문자를 올바르게 사용합니다.

관련 정보