How to sort a file, based on its numerical values for a field?
示例
1 2 3 | 100 foo 2 bar 300 tuu |
使用
1 2 3 | 2 bar 100 foo 300 tuu |
如何根据绝对数值对由数字组成的字段进行排序?
浏览手册页进行排序...
1
2 -n, --numeric-sort
compare according to string numerical value
所以这是一个例子...
1 | sort -n filename |
如果要对混合文本字符串进行排序
好吧,这里的大多数其他答案是关于
1 | sort -n |
但是,我不确定这是否适用于负数。这是我在Fedora 9上使用6.10排序版本得到的结果。
输入文件:
1 2 3 4 5 | -0.907928466796875 -0.61614990234375 1.135406494140625 0.48614501953125 -0.4140167236328125 |
输出:
1 2 3 4 5 | -0.4140167236328125 0.48614501953125 -0.61614990234375 -0.907928466796875 1.135406494140625 |
显然不是按数值排序的。
然后,我猜想更精确的答案是使用
P.S .:对于本示例,使用
编辑:
看起来像语言环境设置会影响减号如何影响顺序(请参见此处)。为了获得正确的结果,我只是做了:
1 | LC_ALL=C sort -n filename.txt |
您必须使用数字排序选项:
1 | sort -n -k 1,1 File.txt |
使用
n
使用sort -nr进行降序排序。请参阅
排序
请参阅上面的手册页以获取更多参考信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | echo" Enter any values to sorting:" read n i=0; t=0; echo" Enter the n value:" for(( i=0;i<n;i++ )) do read s[$i] done for(( i=0;i<n;i++ )) do for(( j=i+1;j<n;j++ )) do if [ ${s[$i]} -gt ${s[$j]} ] then t=${s[$i]} s[$i]=${s[$j]} s[$j]=$t fi done done for(( i=0;i<n;i++ )) do echo" ${s[$i]} " done |