Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux bash sort-g表示x.xxe+;Ubuntu 14.04LTS中的x格式数字_Linux_Bash_Shell_Sorting - Fatal编程技术网

Linux bash sort-g表示x.xxe+;Ubuntu 14.04LTS中的x格式数字

Linux bash sort-g表示x.xxe+;Ubuntu 14.04LTS中的x格式数字,linux,bash,shell,sorting,Linux,Bash,Shell,Sorting,尝试使用sort-g对Ubuntu14.04LTS中的一些数据进行排序(GNU coreutils 8.21),但没有按照我的预期进行排序: printf "1\n6.7\n9\n6.9\n8\n1e4\n7\n1e+3\n2\n4\n45\n1e-2\n0.2e+3\n1.1e2\n1.2e+2" | sort -g 返回 0.2e+3 1e-2 1 1.1e2 1.2e+2 2 4 6.7 6.9 7 8 9 45 1e+3 1e4 似乎适用于x、x.x和xex格式,但不适用于x.xex

尝试使用sort-g对Ubuntu14.04LTS中的一些数据进行排序(GNU coreutils 8.21),但没有按照我的预期进行排序:

printf "1\n6.7\n9\n6.9\n8\n1e4\n7\n1e+3\n2\n4\n45\n1e-2\n0.2e+3\n1.1e2\n1.2e+2" | sort -g
返回

0.2e+3
1e-2
1
1.1e2
1.2e+2
2
4
6.7
6.9
7
8
9
45
1e+3
1e4

似乎适用于
x、x.x
xex
格式,但不适用于
x.xex
数字。非常感谢您的帮助。

我有完全相同的问题和相同的操作系统:Ubuntu 14.04 LTS。我的解决办法是

sudo gedit /etc/default/locale
并添加/替换此行

LC_ALL="en_US.UTF-8"
可能你不在美国,一些当地的环境把事情搞砸了。找到此解决方案的提示。如果这不起作用,一个可能的解决方法是,如果所有条目都包含一个E(或E或d或其他)

这使用
E
-tE
)作为列分隔符,首先按第二列(
-k2g
)排序,即指数,然后按第一列(
-k1g
)排序,即指数之前的内容。这似乎对我有用。我的数据是这样的

0.13000000E-03  6 0.37947329E-11   0.53072241E-11   
0.13000000E-03  5 0.39614807E-11   0.51917483E-11   
0.15511087E-03  6 0.35497942E-11   0.50973016E-11   
0.16372814E-03  7 0.34271161E-11   0.49932135E-11   

排序(GNU coreutils)8.21上运行良好。请将echo与
-e
一起使用。不带
-e
的echo不会解释换行符。更好地使用
printf
printf“1\n6.7\n9\n6.9\n8\n1e4\n7\n1e+3\n2\n4\n45\n1e-2\n0.2e+3\n1.1e2\n1.2e+2”| sort-g
我怀疑这是您运行的命令,
echo
会打印文字
\n
coreutils。使用
sort(GNU>8.13
对我有效8.15
busybox sort v1.18.5
。我运行了您在问题说明中显示的确切命令(复制/粘贴),但没有得到您的结果。我得到了正确的结果。如果您运行了不同的程序并看到意外结果,请编辑您的问题并显示您实际运行的程序和实际结果。您可以将区域设置传递给sort命令,如:printf…|LC_ALL=C排序-g@JonatanÖström谢谢你!这就解决了问题!正如你说的,我不在美国。
0.13000000E-03  6 0.37947329E-11   0.53072241E-11   
0.13000000E-03  5 0.39614807E-11   0.51917483E-11   
0.15511087E-03  6 0.35497942E-11   0.50973016E-11   
0.16372814E-03  7 0.34271161E-11   0.49932135E-11