需要按顺序排序

需要按顺序排序

我需要以下输出才能获得订单。

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它们打印r1 Column 上)。

如果数据最初必须位于标量变量中并且您想在空间上分割它,您可以这样做:

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

或者

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

相关内容