사람과 같은 정렬 순서로 결과를 표시하려면 어떻게 정렬해야 합니까?

사람과 같은 정렬 순서로 결과를 표시하려면 어떻게 정렬해야 합니까?

sort -k1,1 file.txt다음과 같이 파일의 첫 번째 필드에서 sort 명령을 실행합니다 .

1,2,3
2,1,1
10,2,1

나에게주세요:

1,2,3
10,2,1
2,1,1

바꾸다:

1,2,3
2,1,1
10,2,1

나는 2 이전에 10을 원하지 않습니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

설명된 대로 man sort:

   -n, --numeric-sort
          compare according to string numerical value

그래서 당신은 다음을 원합니다:

$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1

또한 기본적으로 필드는 공백으로 구분되므로 이 파일의 이러한 줄에는 필드가 하나만 있습니다. 예를 들어, 첫 번째 행의 첫 번째 필드는 1,2,3가 아니라 입니다 1. -t ,필드를 추가해야 합니다 ,-separated.

sort -t, -nk1,1 file

-n를 사용하면 sort정렬 키의 시작 부분에 유효 숫자를 형성하는 문자 시퀀스만 고려됩니다(선행 공백은 무시됩니다). 첫 번째 줄의 경우 None 은 구현 및 로케일 -t,에 따라 (사용자의 소수 구분 기호가 인 경우 ) 또는 (사용자의 천 단위 구분 기호가 인 경우 ) 로 처리되며 해당 항목은 모두 무시됩니다 .sort1,2,311.2,123,sort

답변2

이 문제를 우연히 발견한 사람에게 맡기십시오. sort -V -k1,1 file.txt작동해야 합니다.

관련 정보