默认的排序顺序是什么?

时间:2018-11-14 04:38:38

标签: shell sorting unix

给出(a.txt):

2n 
4t 
7t 
11t 

之后:

sort a.txt

输出:

11t 
2n 
4t 
7t 

问题:

为什么要下订单?排序依据是什么? (数字还是其他?)

当我尝试提供此输入时:

2
4
7
11
20
30

输出给我这个命令:

11
2
20
30
4
7

如此困惑,为什么11总是第一?

1 个答案:

答案 0 :(得分:1)

来自man sort

  

sort实用程序按行对文本和二进制文件进行排序。一条线是   记录与后续记录之间用换行符分隔(默认)或   NUL'\ 0'字符(-z选项)。记录可以包含任何可打印的或   无法打印的字符。比较基于一种或多种类型   从输入的每一行中提取的键,并执行   根据当前区域设置的整理规则,按字典顺序   以及可以调整实际值的指定命令行选项   排序行为。默认情况下,如果未提供键,则排序将使用整个   比较行。

sort默认使用字母(lexicographic)顺序。如果要对文件进行数字排序,请使用sort -n

关于您的特定问题,为什么排序后的输出中11出现在2之前:

  • 从词法上讲,任何以1开头的字符串总是小于以2开头的任何字符串
  • 排序默认情况下不使用数字顺序

您可以see的ASCII值1和2:

printf '%d\n' "'1" "'2"
49
50