我正在尝试理解当要排序的文件的每一行的第一个字符是数字时,如果我使用不带sort
标志的-n
命令会发生什么。我跑的时候
du /bin/* | sort
看起来输出将所有行以相同的数字组合在一起并在每个组中排序,但数字未排序。所以,这里有一个输出片段,可以说明这一点。
44 /bin/lsblk
44 /bin/ntfswipe
44 /bin/ping
44 /bin/ping6
44 /bin/rmdir
48 /bin/cat
48 /bin/ed
48 /bin/login
4 /bin/bzdiff
4 /bin/bzgrep
4 /bin/bzmore
4 /bin/gunzip
4 /bin/red
4 /bin/running-in-container
4 /bin/unicode_start
4 /bin/which
4 /bin/zcat
4 /bin/zcmp
4 /bin/zegrep
4 /bin/zfgrep
4 /bin/zforce
4 /bin/zless
4 /bin/zmore
答案 0 :(得分:2)
非数字排序是按区域设置指定的顺序逐个字符排序。描述此内容的最简单的语言环境是C
,它按ASCII顺序排序;如果您处于不同的区域设置,则空格可以在数字之前或之后排序,具体取决于其归类顺序的定义方式。 (只有一个非常奇怪的语言环境不会按照常规顺序对字符0
到9
进行排序,但事实上可以定义一个语言环境来做到这一点!)。
对于C
语言环境, - 空格字符的ASCII值为32,而数字0到9的ASCII值为48到57.因此,5<Space>
在{{1}之后排序}},但在49
之前。
如果这没有意义,请将字符替换为其排序顺序更自然的其他内容。例如,让我们通过60
通过A
调用空格0
和9
到B
。然后,K
变为49
,DK
变为5<Space>
,EA
变为60
。期望GB
在DK
之前,EA
之前,这是正常的。