![연속된 숫자를 단일 숫자로 정렬](https://linux55.com/image/161111/%EC%97%B0%EC%86%8D%EB%90%9C%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EB%8B%A8%EC%9D%BC%20%EC%88%AB%EC%9E%90%EB%A1%9C%20%EC%A0%95%EB%A0%AC.png)
명령 출력은 다음과 같습니다.
file_0
file_1
file_10
file_11
file_12
file_13
file_14
file_15
file_2
file_3
file_4
file_5
file_6
file_7
file_8
file_9
awk 또는 다른 posix 도구를 사용하여 연속된 숫자를 단일 숫자로 실제로 정렬하는 방법:
file_0
file_1
file_2
file_3
file_4
file_5
file_6
file_7
file_8
file_9
file_10
file_11
file_12
file_13
file_14
file_15
일반적으로 숫자가 파일 이름 내에 있는 경우에도 작동합니다. 예를 들면 다음과 같습니다.
file_0.txt
file_1.txt
file_10.txt
file_11.txt
file_12.txt
file_13.txt
file_14.txt
file_15.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt
file_6.txt
file_7.txt
file_8.txt
file_9.txt
답변1
sort -nt '_' -k2
산출:
file_0
file_1
file_2
file_3
file_4
file_5
file_6
file_7
file_8
file_9
file_10
file_11
file_12
file_13
file_14
file_15
또는:
file_0.txt
file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt
file_6.txt
file_7.txt
file_8.txt
file_9.txt
file_10.txt
file_11.txt
file_12.txt
file_13.txt
file_14.txt
file_15.txt
FreeBSD 및 GNU coreutils 구현으로 테스트되었지만 구현에서는 작동 sort
하지 않습니다 . busybox
사용된 모든 옵션은 다음에 의해 지정됩니다.
POSIX.
답변2
이것을 시도해 보십시오:
output | awk '{print gensub("[^0-9]*","","g") " " $0 }' | sort -n | awk '{$1=""; print $0}' | sed 's/^ //g'
가장 우아한 솔루션은 아니지만 작동합니다.
답변3
대답은 (그 중 하나라고 확신합니다) 다음과 같습니다.
sort -t _ -k 2 -g [filename with names+numbers or piped from another command with | - both situations will work ]