nev*_*int 19 unix linux sorting numbers
我尝试用Unix排序对这些数字进行排序,但它似乎不起作用:
2e-13
1e-91
2e-13
1e-104
3e-19
9e-99
Run Code Online (Sandbox Code Playgroud)
这是我的命令:
sort -nr file.txt
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法呢?
Tyl*_*nry 39
使用-g(长格式--general-numeric-sort)代替-n.该-g选项传递数字strtod以获取它们的值,它将识别此格式.
我不确定这是否适用于所有实现sort,或只是GNU实现.
如果你sort没有-g,另一种方式.
$ printf "%.200f\n" $(<file) |sort -n |xargs printf "%g\n"
1e-104
9e-99
1e-91
3e-19
2e-13
2e-13
$ sort -g file
1e-104
9e-99
1e-91
3e-19
2e-13
2e-13
$ printf "%.200f\n" `cat file` |sort -n |xargs printf "%g\n"
Run Code Online (Sandbox Code Playgroud)
只需做两件事:
-g(或--general-numeric-sort)sort正确处理Exp编号。LC_ALL=C。该sort是非常明智的语言环境,如果你的数据可能包含不同的ASCII一些语言相关的符号。因此,LC_ALL=C对于您使用的每种情况,使用 都是通用的方法sort,它可以sort将输入流视为二进制,并且不会有任何问题。因此,通用解决方案是:
cat file.txt | LC_ALL=C sort -gr | less
我也为.bashrc文件中的排序做了一个别名:
alias csort="LC_ALL=C sort"
方便使用。
| 归档时间: |
|
| 查看次数: |
16809 次 |
| 最近记录: |