如何在bash中对逗号分隔值进行排序?

pos*_*ing 7 linux csv sorting bash comma

我有一些数字

7, 15, 6, 2, -9

我想在bash中对它进行排序(从命令行或脚本文件)

-9, 2, 6, 7, 15

我怎样才能做到这一点?我无法使用sort命令获取此信息.

Yu-*_*hen 10

echo "7, 15, 6, 2, -9" | sed -e $'s/,/\\\n/g' | sort -n | tr '\n' ',' | sed 's/.$//'
Run Code Online (Sandbox Code Playgroud)
  1. sed -e $'s/,/\\\n/g':用于通过逗号将字符串拆分为行.
  2. sort -n:然后你可以使用按数字排序
  3. tr '\n' ',':隐藏换行符分隔符回逗号.
  4. sed 's/.$//':删除尾部逗号.

不够优雅,但它应该工作:p

  • 太好了!我很好奇你没有使用`tr`用换行符替换逗号(和空格):`echo"7,15,6,2,-9"| tr -s',''\n \n'| sort -n | tr'\n'','| sed's /,$ //'`.在[评论](/sf/ask/3336563681/#comment82290597_47665195)中建议的`paste -sd','替代方案是有用的第二个`tr`和`sed`.POSIX要求`paste`的文件名,因此可移植代码将使用`paste -s -d',' - ` - GNU`paste`更明智,但BSD(macOS)`paste`完全符合POSIX . (3认同)