小编Tas*_*nou的帖子

Bash 按非字典顺序对以标点符号开头的行进行排序

我有一个包含行的文件,其中一些以!字符开头,一些以字符?开头,一些以空格 ( ) 字符开头。第二个字符始终是字母表中的字母。

当我尝试使用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)

bash sort coreutils

3
推荐指数
1
解决办法
247
查看次数

标签 统计

bash ×1

coreutils ×1

sort ×1