不带 -n 标志的命令行排序

Command line sort without -n flag

我想了解当要排序的文件的每一行的第一个字符是数字时,如果我使用不带 -n 标志的 sort 命令会发生什么。当我运行

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

非数字排序是按语言环境指定的顺序逐字符排序。最简单的语言环境是 C,它按 ASCII 顺序排序;如果您在不同的语言环境中,spaces 可能会在数字之前或之后排序,具体取决于其整理顺序的定义方式。 (只有非常奇怪的语言环境不会按照常规顺序对字符 09 进行排序,但实际上可以定义语言环境来做到这一点!)。

对于 C 语言环境,虽然 - space 字符的 ASCII 值为 32,而数字 0 到 9 的 ASCII 值为 48 到 57。因此,5<Space>49 之后但在 60.

之前排序

如果这没有意义,请将字符替换为其他排序顺序对您来说更自然的内容。例如,我们将 space 称为 A,将 09 称为 BK。然后,49变成DK5<Space>变成EA60变成GB。期望 DKEA 之前应该是正常的,而 EA 又在 GB.

之前