![](/img/trans.png)
[英]How to write a bash script to generate a file named inputFile with comma separated values with index and a random number
[英]How to sort comma separated values in bash?
我有一些数字
7, 15, 6, 2, -9
我想在bash中对它进行排序(从命令行或脚本文件)
-9, 2, 6, 7, 15
我怎样才能做到这一点? 我无法使用sort命令获取此信息。
echo "7, 15, 6, 2, -9" | sed -e $'s/,/\\\n/g' | sort -n | tr '\n' ',' | sed 's/.$//'
sed -e $'s/,/\\\\\\n/g'
:用逗号分隔字符串。 sort -n
:然后你可以使用按编号排序 tr '\\n' ','
:将新行分隔符隐藏回逗号。 sed 's/.$//'
:删除尾随逗号。 不够优雅,但它应该工作:p
用perl
$ s='7, 15, 6, 2, -9'
$ echo "$s" | perl -F',\h*' -lane 'print join ", ", sort {$a <=> $b} @F'
-9, 2, 6, 7, 15
$ echo "$s" | perl -F',\h*' -lane 'print join ", ", sort {$b <=> $a} @F'
15, 7, 6, 2, -9
-F',\\h*'
使用,
可选空格/制表符作为字段分隔符
sort {$a <=> $b} @F
以数字顺序对数组进行排序,按升序排序...使用sort {$b <=> $a} @F'
降序排序 join ", "
告诉如何在传递打印之前连接数组元素 总结答案和评论,这可以工作和维护空间:
echo "7, 15, 6, 2, -9" | sed -e $'s:,:\\\\\\n:g' | sort -n | paste -sd ',' - | sed 's:,:, :g'
请注意,您可以使用sed -e 's:,:\\n:g'
而不是第一个sed
调用。 这适用于我的系统运行bash
版本4.2.46与sed
版本4.2.2。 要删除空格(或者如果它们不必要),请删除最后的sed
调用和管道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.