입력
$ cat /tmp/input
0x45 aaa 333
0x50 dd 33
0x4 bbbb 444
0x456 cc 22
0x5 eee 1111
하나의 라이너 정렬
$ gawk --non-decimal-data '{ dec = sprintf("%d", $1); print dec " " $0 }' /tmp/input | sort -n -k 1 | cut -f2- -d' '
0x4 bbbb 444
0x5 eee 1111
0x45 aaa 333
0x50 dd 33
0x456 cc 22
단계별 정렬
1 단계 : 16 진 숫자의 10 진수 표현으로 새로운 첫 번째 열을 추가하십시오.
$ gawk --non-decimal-data '{ dec = sprintf("%d", $1); print dec " " $0 }' /tmp/input
69 0x45 aaa 333
80 0x50 dd 33
4 0x4 bbbb 444
1110 0x456 cc 22
5 0x5 eee 1111
2 단계 : 첫 번째 필드에서 행을 숫자로 정렬합니다.
$ gawk --non-decimal-data '{ dec = sprintf("%d", $1); print dec " " $0 }' /tmp/input | sort -n -k 1
4 0x4 bbbb 444
5 0x5 eee 1111
69 0x45 aaa 333
80 0x50 dd 33
1110 0x456 cc 22
3 단계 : 첫 번째 열을 제거합니다.
$ gawk --non-decimal-data '{ dec = sprintf("%d", $1); print dec " " $0 }' /tmp/input | sort -n -k 1 | cut -f2- -d' '
0x4 bbbb 444
0x5 eee 1111
0x45 aaa 333
0x50 dd 33
0x456 cc 22
-k3,3
? 0x와 같은 길이의 헥사 숫자가 있습니까? 대소 문자가 혼합되어 있지 않습니까? 그렇다면 문자열로 해석 될 때 올바르게 정렬해야합니다. 예시 데이터를 보여 주시겠습니까?