
注文を受け取るには、次の出力が必要です。
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)