정렬할 때 쉼표가 숫자 앞에 오나요?

정렬할 때 쉼표가 숫자 앞에 오나요?

foo내용이 다음과 같은 파일이 있습니다 .

140,22
236,224
2,86

이를 사용하여 정렬하면 sort foo동일한 결과를 얻습니다. 그것은 ,숫자 뒤에 있거나 적어도 ,뒤에 있다는 것을 알려줍니다 3.

역설적이게도 다음과 같은 일이 발생합니다.

$echo -e "2\n,\n3" | sort
,
2
3

,그 말은 그것이 이전에 있었던 일이라는 것을 말해 줍니다 2. 난 이해가 안 돼요. 누군가 이것을 설명할 수 있나요?

답변1

종류지역에 따라 다릅니다., 그래서 이상한 설명이 있을 수 있습니다. 내 시스템에서 귀하와 동일한 결과를 얻었습니다. 여기서 쉼표는무시당하다로케일을 통해. 따라서 목록에 276및 를 추가 하면 다음과 같습니다.296

$ sort /tmp/tosort
140,22
236,224
276
2,86
296

이는 두 번째 명령의 결과도 설명합니다. 쉼표가 정렬되지 않았습니다.첫 번째, 그러나 무시되었습니다. 따라서 본질적으로 빈 문자열을 정렬합니다. 테스트에 빈 문자열을 추가하면 처음에도 해당 문자열이 표시됩니다.

$ echo -e "2\n,\n3\n" | sort

,
2
3

(왜 빈 문자열이 쉼표 앞에 오는지 명확하지 않습니다. 동점이 있을 때 쉼표가 사용되는 것으로 생각됩니다.)

"표준" POSIX 로케일을 사용하면 더 예측 가능한 결과를 얻을 수 있습니다.

$ export LC_ALL=C
$ sort foo
140,22
2,86
236,224

관련 정보