"정렬" 유틸리티는 어떻게 작동하나요? (왜 내가 생각하는 대로 작동하지 않는 걸까요?) [복제]

"정렬" 유틸리티는 어떻게 작동하나요? (왜 내가 생각하는 대로 작동하지 않는 걸까요?) [복제]

텍스트 파일이 2개 있습니다.

$ cat /tmp/test1
"AAP" bar
"AEM" bar
"AA" bar
"AEO" bar
"A" bar

$ cat /tmp/test2
"AEM" foo
"AAP" foo
"A" foo
"AEO" foo
"AA" foo

정렬하고 싶어요

$ sort /tmp/test1
"AA" bar
"AAP" bar
"A" bar              <-- "A" is in position 3
"AEM" bar
"AEO" bar

$ sort /tmp/test2
"AA" foo
"AAP" foo
"AEM" foo
"AEO" foo
"A" foo              <-- "A" is in position 5

"A"끝나지?위치 3/tmp/test1그리고위치 5인치/tmp/test2?

내 기대는모든 열의 모든 문자비교됩니다.

따라서 3열을 비교할 때 , 'A', 'E''"'가 서로 비교되며, 이것이 이 테스트 데이터의 최종 정렬 순서를 결정하는 최종 결정 요인이 됩니다.

분명히 내 기대가 틀렸는데, sort내가 예상한 대로 작동하지 않으면 어떻게 작동했을까요?

sort원하는 정렬 순서를 얻는 데 사용할 수 있는 명령줄 옵션이나 기타 유틸리티가 있습니까 ?

답변1

조합 로케일을 변경해야 합니다. 설명하는 동작은 en_US다른 많은 로케일에서 일반적입니다. 수리하다:

LC_ALL=C   sort  /tmp/test1

이 답변에 대한 자세한 내용은 다음과 같습니다.https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output

답변2

아마도 알파벳 문자만 볼 수 있을까요? 따라서 A다음 알파벳 문자는 bbar에서 온 것입니다.

관련 정보