什么是使用sort -d选项我很困惑呢?

时间:2015-03-14 05:39:15

标签: linux sorting unix

我想知道在Unix中使用sort -d命令。

它将根据字典顺序进行排序,但当我检查输入时,我没有得到它的工作方式。

   The input is:
   | hi 
   |hi
   |   hello
   |hello
   |  hello

    output:
    |hello
    |  hello
    |   hello
    |hi
    | hi

有人可以用例子清楚地解释我。 在此先感谢!!!!!!

2 个答案:

答案 0 :(得分:0)

所有它正在按字典顺序进行排序,它假定因为在某些之前有空格/制表符,它们在原始之后没有填充。

不确定问题究竟是什么,但希望有所帮助。

答案 1 :(得分:0)

字典顺序在某种意义上说,它忽略了所有不是字母数字的字符。简单示例是一个文件列表,其中一些文件以./为前缀。如果您使用非POSIX LANG(例如,我使用的是en_US.UTF-8),则排序无法正常工作,因为它似乎始终如同指定-d一样。所以很可能,你没有看到在你的系统上使用-d和省略它之间的区别

如果将LANG环境设置为“C”(LC_ALL也可以正常工作),它将按预期工作。

文件中的订单:

~ » echo $LANG
en_US.UTF-8
~ » cat to_sort.txt
b
./a
./c

然后排序-d

~ » sort -d to_sort.txt
./a
b
./c

与没有-d

相同
~ » sort to_sort.txt
./a
b
./c
带有POSIX语言的

默认值与预期一致:

~ » LANG=C sort to_sort.txt
./a
./c
b
~ » 

和-d也适用:

~ » LANG=C sort -d to_sort.txt
./a
b
./c