이것은 내 파일에 있는 파일 이름의 하위 집합입니다.
profile_10_1_1
profile_10_1_2
profile_1_1_1
1부터 시작해서 오름차순으로 정렬하려고 합니다. 다음 명령을 사용했습니다.
sort -n filename
또한 이것을 시도했습니다:
sort -nk filename
하지만 10을 가진 항목은 항상 목록의 맨 위에 표시됩니다.
원하는 출력을 얻기 위해 명령을 작성하는 방법:
profile_1_1_1
profile_1_1_2
....
profile_9_1_1
....
profile_10_1_1
답변1
FreeBSD와 GNU에는 sort
이에 대한 옵션이 있습니다.-V
sort -V < filename
GNU 에는 옵션이 ls
있습니다 -v
. 따라서 이러한 파일이 존재하는 경우 다음을 수행할 수 있습니다.
xargs -d '\n' < filename ls -dv --
zsh
숫자로 배열을 정렬하는 인수 확장 플래그가 있습니다.
printf '%s\n' ${(fno)"$(<filename)"}
그렇지 않으면 이식성을 위해 다음을 수행해야 합니다.
sort -t_ -k1,1 -k2,2n -k3,3n -k4,4n -k5,5n filename
답변2
-V
당신이 원하는 것.
-V, --version-sort
natural sort of (version) numbers within text
적어도 GNU에서는 작동합니다 sort
.