当我尝试按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
答案 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文件中设置语言环境,但是这个可能会影响其他文件列表等。