순서대로 정렬해야 함

순서대로 정렬해야 함

주문을 받으려면 다음 출력이 필요합니다.

var="vas-1 vas-2 vas-3 .... vas-10 vas-11"
echo $var | egrep 'vas-[0-9]'

산출:

vas-1
vas-10
vas-11
vas-2
vas-3
..

예상 출력

vas-1
vas-2
vas-3
..
vas-10
vas-11

답변1

Coreutils가 sort작업을 수행해야 합니다.

$ var="vas-1 vas-2 vas-3 .... vas-10 vas-11"
$ echo "${var// /\\n}"
vas-1
vas-10
vas-11
vas-2
vas-3
..

# Sorted
$ echo "${var// /\\n}" | sort -n -t '-' -k 2
vas-1
vas-2
vas-3
..
vas-10
vas-11

이것은 구체적인 것 ${var// /\\n}입니다 . bash공백을 줄바꿈으로 바꾸므로 줄바꿈으로 구분된 출력을 인쇄합니다.

답변2

쉘 포함 zsh:

# use an array instead of a scalar variable to store several values:
$ array=(vas-10 vas-2 vas-3 .... vas-1 vas-11)
$ print -rC1 -- ${(no)array}
....
vas-1
vas-2
vas-3
vas-10
vas-11

어디o 매개변수 확장 플래그 o확장할 때 배열의 요소를 정렬하고 n해당 순서를 n숫자로 만듭니다(그리고 print -rC1이를 olumn r에 인쇄합니다).1 C

데이터가 처음에 스칼라 변수에 있어야 하고 공간적으로 분할하려는 경우 다음을 수행할 수 있습니다.

array=(${(s: :)var}) # split explicitly on SPC only

또는

array=($=var) # split on $IFS (SPC, TAB, NL, NUL by default)

관련 정보