给出(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总是第一?
答案 0 :(得分:1)
来自man sort
:
sort实用程序按行对文本和二进制文件进行排序。一条线是 记录与后续记录之间用换行符分隔(默认)或 NUL'\ 0'字符(-z选项)。记录可以包含任何可打印的或 无法打印的字符。比较基于一种或多种类型 从输入的每一行中提取的键,并执行 根据当前区域设置的整理规则,按字典顺序 以及可以调整实际值的指定命令行选项 排序行为。默认情况下,如果未提供键,则排序将使用整个 比较行。
sort
默认使用字母(lexicographic)顺序。如果要对文件进行数字排序,请使用sort -n
。
关于您的特定问题,为什么排序后的输出中11出现在2之前:
您可以see的ASCII值1和2:
printf '%d\n' "'1" "'2"
49
50