遇到$(美元符号)时,会产生奇怪的Linux排序结果

时间:2015-11-14 15:26:52

标签: linux sorting

当我尝试按sort test.txt

对以下文字进行排序时

的test.txt

fadf
basdf
asdfa
asdf
tasdf
gasdf
$
$ asdf
$ basd
$ asfd
$sdfa
$asdf

输出结果为:

$
asdf
$asdf
$ asdf
asdfa
$ asfd
$ basd
basdf
fadf
gasdf
$sdfa
tasdf

顺便说一句,在我的Mac上,输出是:

$
$ asdf
$ asfd
$ basd
$asdf
$sdfa
asdf
asdfa
gasdf
sdf
tasdf

我认为结果很奇怪,除了$ sign的位置,甚至“asdf”和“asdfa”用$ lines分隔。

为什么那些$不在一起?以及如何将它们组合在一起(或如何按ASCII排序)?这是一个错误吗?

(我已经搜索了很长时间。非常感谢〜)

Linux:14.04.1 LTS,Trusty Tahr sort:(GNU coreutils)8.21

1 个答案:

答案 0 :(得分:1)

意外排序的原因是排序规则。

要查看您当前的规则,请输入

sort  --debug sortfile

例如,在我的笔记本电脑上,我得到了

sort: using ‘en_ZA.UTF-8’ sorting rules

$
_
asdf
____
$asdf
_____
$ asdf
______
asdfa
_____
$ asfd

所以它使用我的语言环境进行搭配,其中包括要注意货币等的规则。

要忽略此操作,请将排序规则更改为旧版排序规则C.

 LC_COLLATE=C sort  sortfile 
$
$ asdf
$ asfd
$ basd
$asdf
$sdfa
asdf
asdfa
basdf
fadf
gasdf
tasdf

如果你想要设置permanant,你可以在你的bashrc文件中设置语言环境,但是这个可能会影响其他文件列表等。