2012-08-13 67 views
0

不一致的答案我使用排序按照字母顺序排列的文件的行排序,但我得到了一些奇怪的结果。 我认为这是使用字符的十进制代码对它们进行排序,但看起来不像。即'E'(十进制码69)在'e'(十进制码101)之后,'0'(码48)在':'之后(码58)。
我试图用与sort命令

if [[ "E" < "e" ]]; then echo "true"; else echo "false"; fi 

if [[ "0" < ":" ]]; then echo "true"; else echo "false"; fi 

检查,如果它给了我正确的答案,但事实并非如此。 我正在使用Ubuntu 12.04,并且我的环境和我正在尝试排序的文件的编码被定义为en_us.UTF-8。

问题是,我必须解析java程序中的这些文件,假设这些行按字母顺序排序。所以,当java根据字符的十进制代码比较字符串时,我的解析失败,因为文件中的行不按照相同的顺序排序。

有人可以帮我解决这个问题,或者迫使排序使用十进制代码,要么使用另一种方法来按照这个顺序对文件进行排序。

非常感谢您的任何帮助。

回答

2

警告在手册中。

*** WARNING *** The locale specified by the environment affects sort 
    order. Set LC_ALL=C to get the traditional sort order that uses native 
    byte values. 

尝试这种情况:

$ LC_ALL=C sort input.txt 
0 
: 
E 
e 

$是壳提示)