예를 들어 테스트 파일이 있는데 열 값을 기준으로 정렬하고 싶습니다. 뒤쪽에
awk -F'[:,]' '{print $16}' test.json
열 16에 대한 다음 출력을 얻습니다.
123
457
68
11
939
11
345
9
199
13745
이제 숫자로 정렬하고 싶을 때 다음을 사용합니다.
awk -F'[:,]' '{print $16}' test.json | sort -nk16
하지만 숫자 정렬 대신 다시 가져옵니다 ...
11
11
123
13745
199
345
457
68
9
939
이유는 무엇일까요, -n
수치정렬에는 매개변수면 충분할 것 같은데...
답변1
의 출력에는 awk
열이 하나만 포함되어 있으므로 열 16이 없습니다.
따라서 sort
모두 동일한 빈 정렬 키를 보면 관찰되는 것은 마지막 종류의 정렬(전체 행에 대한 어휘 정렬)의 결과이며 -s
일부 구현에서는 이 옵션을 사용하여 비활성화할 수 있습니다.
원하는 곳은 다음과 같습니다.
awk -F'[:,]' '{print $16}' test.json | sort -n
이제 열 16에서 파일을 정렬 하려면sort
문자 열 구분 기호가 하나만 지원되므로 입력을 전처리해야 합니다.
sed 's/[:,]/&+/g' test.json | sort -t+ -k16,16n | sed 's/\([:,]\)+/\1/g'
여기서 a는 +
각각에 추가 :
되거나 열 구분 기호 ,
로 +
정렬하고 다음 항목을 제거합니다 +
.