对逗号分隔的值列表进行排序

时间:2010-08-10 00:19:47

标签: macos sorting shell

在Mac OS X中对逗号分隔的值列表进行排序的最简单方法是什么:

输入:“a,b,aaa,bc”

输出:“a,aaa,b,bc”

我想从终端执行此操作,以便将输出传递给另一个命令。

3 个答案:

答案 0 :(得分:4)

$ echo "a, b, Aaa, bc" |egrep -o "[^, ]+" |sort -f | xargs |sed -e 's/ /, /g'

如果值包含空格:

$ echo "a, b, Aaa, bc" |egrep -o "[^, ][^,]*" |sort -f | xargs -I Q echo Q, | xargs

但是你最后会免费获得额外的“,”。

答案 1 :(得分:1)

echo "a, b, Aaa, bc"|tr -s "[, ]" "\n"|sort|sed -e :a -e 'N;s/\n/,/;ba'

echo "a, b, Aaa, bc"| tr -s "[, ]" "\n"|sort|tr "\n" ","|sed 's/,$//'

答案 2 :(得分:0)

echo 'a, b, aaa, bc' | awk '{split($0, a, ", "); n = asort(a); for (i=1; i<=n; i++) {printf a[i]; if (i<n) printf ", "}}'