gpt4 book ai didi

bash - GNU `sort` 命令无法在打开稳定和(一般)数字排序的情况下进行排序

转载 作者:行者123 更新时间:2023-12-02 04:13:14 27 4
gpt4 key购买 nike

在使用 GNU sort 8.4 和 8.24 不同的排序方法时,我遇到了一个相当奇怪的情况:

指定稳定排序和数字排序会返回原始列表:

$ printf '"A"\n"C"\n"B"\n' | sort -sn -k1,1
"A"
"C"
"B"
$ printf '"B"\n"A"\n"C"\n' | sort -sn -k1,1
"B"
"A"
"C"

...而仅指定单一排序方法则可以正常工作:

$ printf '"B"\n"A"\n"C"\n' | sort -n -k1,1
"A"
"B"
"C"
$ printf '"B"\n"A"\n"C"\n' | sort -g -k1,1
"A"
"B"
"C"
$ printf '"B"\n"A"\n"C"\n' | sort -s -k1,1
"A"
"B"
"C"

问题:稳定排序真的与(一般)数字排序不兼容吗?还是我在这里遗漏了一些东西?

在这种情况下,我预计会出现如下所示的错误:

$ printf '"B"\n"A"\n"C"\n' | sort -gn -k1,1
sort: options '-gn' are incompatible

提前致谢,非常感谢任何关于为什么会发生这种情况的见解!

最佳答案

数字排序按排序字段的最长数字前缀进行排序,忽略前导空格。数字前缀允许为空:“空数字字符串应被视为零”。

稳定排序会保留键比较相等的行的原始顺序,因此,如果稳定数字排序行不以数字开头,则输出将与输入相同。

上面的引用来自Posix standard ;如果您的计算机上正确安装了文档,则可以使用 info sort 找到 gnu sort 的完整文档,或者通过 sort 联机帮助页底部的 url(我从中找到)提取this link to the -n option .

关于bash - GNU `sort` 命令无法在打开稳定和(一般)数字排序的情况下进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35349269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com