我有一个包含行的文件,其中一些以!字符开头,一些以字符?开头,一些以空格 ( ) 字符开头。第二个字符始终是字母表中的字母。
当我尝试使用sortcoreutils 中的 bash 命令时,这似乎忽略了第一个字符,并仅根据第二个字符进行排序。
这让我非常惊讶,因为我认为排序会根据标点符号的 ascii 值来处理标点符号,并将所有行集中!在一起,然后将所有?行集中在一起,等等。
特别是,文档说有一个-d选项,它明确指示sort命令忽略此类标点符号。但我想要的是相反的行为,并且没有选择“逆转”这种行为。就好像这个-d选项已经以某种方式“烘焙”出来了。
我已经检查过,据我所知,我没有在某个地方定义了可能会-d意外激活该标志的别名。
这是一个错误吗sort?(coreutils v8.32)。有没有办法强制它不按字典顺序排序,而是按严格的 ascii 值排序?
操作系统:Linux Mint 21.1(基于 ubuntu jammy,据我所知),以防相关
编辑:根据要求提供区域设置和 MVP
$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
$ echo '
> !a
> ?b
> c
> !f
> e
> ?d' | sort
!a
?b …Run Code Online (Sandbox Code Playgroud)