簡體   English   中英

遇到$(美元符號)時,奇怪的Linux排序結果

[英]Weird Linux sort results when $(dollar sign) is encountered

當我嘗試通過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

我認為結果很奇怪,除了$符號的位置,甚至“ asdf”和“ asdfa”也用$行分隔。

為什么這些$不在一起? 以及如何使它們在一起(或如何按ASCII排序)? 這是錯誤嗎?

(搜索了很長時間。非常感謝〜)

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

發生意外排序的原因是排序規則。

要查看您當前的規則,請輸入

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

如果您想永久保留設置,則可以在bashrc文件中設置區域設置,但這可能會影響文件列表等其他內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM