如何在BASH中对行进行排序

如何在BASH中对行进行排序,bash,Bash,bash或linux终端命令中可用的大多数排序都是关于字段(列)的排序。我不知道如何对一行三个数字进行排序,例如“1,3,2”。我希望它从左到右从小到大,像“1,2,3”,反之亦然 所以输入类似于line=“5,3,10”。排序后,输出将被排序_line=“3,5,10” 有什么建议吗?谢谢 这是一种方式: echo "6 5,4,9 1,3 2,10,7 8" | awk '{ split($0,arr,"(,| )") ; asort(arr); exit; } END{ for ( i=1

bash或linux终端命令中可用的大多数排序都是关于字段(列)的排序。我不知道如何对一行三个数字进行排序,例如“1,3,2”。我希望它从左到右从小到大,像“1,2,3”,反之亦然

所以输入类似于line=“5,3,10”。排序后,输出将被排序_line=“3,5,10”

有什么建议吗?谢谢

这是一种方式:

echo "6 5,4,9 1,3 2,10,7 8" | awk '{ split($0,arr,"(,| )") ; asort(arr); exit; } END{ for ( i=1; i <= length(arr) ; i++ ) { print arr[i]} }'

echo“6 5,4,9 1,3 2,10,7 8”| awk'{split($0,arr,(,|));asort(arr);exit;}END{for(i=1;i注意,
asort
适用于
gawk
非通用
awk
。因此这里是另一个文件解决方案,a.txt

gawk -F, '{split($0, w); s=""; for(i=1; i<=asort(w); i++) s=s w[i] ","; print s }' a.txt | sed 's/,$//'
结果,

1,2,5,7
1,3,4,8
2,7,8,9

像这样?用换行符替换换行符->排序行->用换行符替换换行符是用逗号或逗号空格分隔的输入吗?你的问题中有这两个。链接的解决方案有效。谢谢Ben。谢谢大家。正如你在我的回答中所看到的,asort在awk中工作。这可能在一个环境下工作,但n总的来说env@MatiasBarrios是的,如果你的awk是GNU awk。POSIX不需要awk中的排序功能。需要在Ubuntu18.04上安装gawk包。
1,2,5,7
1,3,4,8
2,7,8,9