代码之家  ›  专栏  ›  技术社区  ›  Abdullah Jibaly

排序以逗号分隔的值列表

  •  2
  • Abdullah Jibaly  · 技术社区  · 14 年前

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

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

    我想从终端执行此操作,以便将输出通过管道传输到另一个命令。

    3 回复  |  直到 14 年前
        1
  •  4
  •   mvds    14 年前
    $ 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
    

        2
  •  1
  •   ghostdog74    14 年前
    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/,$//'
    
        3
  •  0
  •   Dennis Williamson    14 年前
    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 ", "}}'