텍스트 파일이 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
다음 알파벳 문자는 b
bar에서 온 것입니다.