다음과 같은 데이터가 있는데 숫자순으로 값을 정렬하고 싶습니다. 이 명령은 효과가 없습니다.
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