밑줄이 포함된 숫자를 숫자순으로 정렬

밑줄이 포함된 숫자를 숫자순으로 정렬

다음과 같은 데이터가 있는데 숫자순으로 값을 정렬하고 싶습니다. 이 명령은 효과가 없습니다.

sort -t'_' -nk3,2 c

입력 데이터

5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17
6_2_1
6_2_2
6_2_3

답변1

무엇을 달성하고 싶은지 말하기는 어렵지만 다음이 필요하다고 가정합니다.

5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_2_1
6_2_2
6_2_3
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17

출력으로.

이는 숫자를 "버전"으로 처리하여 얻을 수 있으며 "버전 정렬"은 -V아래와 같이 스위치를 통해 사용할 수 있습니다.

sort -V <file>

이 동작은 다음에서 설명됩니다.sort매뉴얼 페이지

답변2

-kx,y방법:x번째 필드의 시작 부분에서 끝나고 y번째 필드 의 끝에서 끝나는 행 부분을 정렬 키로 사용.

따라서 -k3,2이 경우에는 의미가 없습니다. 다음을 의미하는 경우:세 번째 필드를 숫자로 정렬한 다음 두 번째 필드를 숫자로 정렬합니다.,그건:

sort -nt_ -k3,3 -k2,2

또는:

sort -t_ -k3,3n -k2,2n

(여기서 이 옵션을 사용하여 전역적으로 숫자 정렬을 수행하는 n대신 숫자 플래그가 각 키 사양에 적용됩니다 .)-n

관련 정보