順番に並べる必要がある

順番に並べる必要がある

注文を受け取るには、次の出力が必要です。

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それをolumnrに印刷します)。1 C

データが最初にスカラー変数に存在し、空間的に分割したい場合は、次のことができます。

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

または

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

関連情報