我需要以下输出才能获得订单。
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
Coreutilssort
应该完成这项工作
$ 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
它们打印r
在1
C
olumn 上)。
如果数据最初必须位于标量变量中并且您想在空间上分割它,您可以这样做:
array=(${(s: :)var}) # split explicitly on SPC only
或者
array=($=var) # split on $IFS (SPC, TAB, NL, NUL by default)