不带 -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 可能会在数字之前或之后排序,具体取决于其整理顺序的定义方式。 (只有非常奇怪的语言环境不会按照常规顺序对字符 0
到 9
进行排序,但实际上可以定义语言环境来做到这一点!)。
对于 C
语言环境,虽然 - space 字符的 ASCII 值为 32,而数字 0 到 9 的 ASCII 值为 48 到 57。因此,5<Space>
在 49
之后但在 60
.
之前排序
如果这没有意义,请将字符替换为其他排序顺序对您来说更自然的内容。例如,我们将 space 称为 A
,将 0
到 9
称为 B
到 K
。然后,49
变成DK
,5<Space>
变成EA
,60
变成GB
。期望 DK
在 EA
之前应该是正常的,而 EA
又在 GB
.
之前
我想了解当要排序的文件的每一行的第一个字符是数字时,如果我使用不带 -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 可能会在数字之前或之后排序,具体取决于其整理顺序的定义方式。 (只有非常奇怪的语言环境不会按照常规顺序对字符 0
到 9
进行排序,但实际上可以定义语言环境来做到这一点!)。
对于 C
语言环境,虽然 - space 字符的 ASCII 值为 32,而数字 0 到 9 的 ASCII 值为 48 到 57。因此,5<Space>
在 49
之后但在 60
.
如果这没有意义,请将字符替换为其他排序顺序对您来说更自然的内容。例如,我们将 space 称为 A
,将 0
到 9
称为 B
到 K
。然后,49
变成DK
,5<Space>
变成EA
,60
变成GB
。期望 DK
在 EA
之前应该是正常的,而 EA
又在 GB
.