`sort -k 2,3b`와 `sort -k 2,3`은 언제 다릅니까?

`sort -k 2,3b`와 `sort -k 2,3`은 언제 다릅니까?

이것POSIX 설명-b이 명령의 플래그는 sort다음과 같습니다.

제한된 정렬 키의 시작과 끝을 결정할 때 선행 문자는 무시됩니다.

키의 시작 위치의 목적은 이해할 수 있지만 끝 위치는 어떻습니까? 누구든지 예를 들어 줄 수 있습니까?

예를 들어, 로캘이 POSIX로 설정되면 다음을 포함하는 파일이

x  z
x a

sort -k 2및 아래에서는 다르게 정렬되지만 , 및가 영향을 미치는 sort -k 2b경우는 생각할 수 없습니다 .sort -k 2,3bsort -k 2,3

답변1

비교에 반대를 추가하면 효과가 있습니다. -r다음에만 적용되므로 우선순위가 변경됩니다.최후의 수단 비교.

반전 없음:

$ sort -k 1,2 sample
A  34
A 33

$ sort -k 1,2b sample
A  34
A 33

취소:

$ sort -rk 1,2 sample
A 33
A  34

$ sort -rk 1,2b sample
A  34
A 33

답변2

누군가가 이것에 대해 궁금해하고 우연히 이 문제를 발견하게 된다면, --debugGNU 정렬에서 언급된 Sukminder 플래그가 이 문제에 대한 답을 찾는 데 도움이 되었습니다. 예를 들어, 형식이 잘못된 이 파일을 정렬한다고 가정해 보겠습니다.

x   FRA-Paris    Pierre
x ESP-Barcelona   Jordi
x     FRA-Nice  Charles
x    FRA-Toulouse Nicole
x   ESP-Seville  Javier
x    ESP-Madrid  Carlos

다음을 입력하세요:

x    ESP-Madrid  Carlos
x   ESP-Seville  Javier
x ESP-Barcelona   Jordi
x     FRA-Nice  Charles
x    FRA-Toulouse Nicole
x   FRA-Paris    Pierre

즉, 두 번째 필드에서는 국가에만 초점을 맞추고 세 번째 필드에서는 사람의 이름에 초점을 맞추는 것입니다. 두 번째 필드의 처음 세 문자를 고려하고 첫 번째와 세 번째 문자를 결정할 때 선행 공백을 무시하는 것이 중요합니다.

명령은 sort -k 2b,2.3b -k 3b작동하지만 sort -k 2b,2.3 -k 3b작동하지 않습니다. 이 경우 가장 자연스러운 접근 방식은 -b와 같은 전역 옵션을 적용하는 것입니다 sort -bk 2,2.3 -k 3.

관련 정보