微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 如果coreutils排序中的数值相等,则保留原始顺序?

请考虑以下代码段:

echo '7 a
3 c
3 b
2 first
2 second
2 third
2 fourth
2 fifth
9 d
2 sixth
' | sort -n -k 1

它给出了一个输出

2 fifth
2 first
2 fourth
2 second
2 sixth
2 third
3 b
3 c
7 a
9 d

虽然列表是由第一个字符以数字方式正确排序的,但对于那些连续且相等的值,原始顺序也已被洗牌.我想获得:

2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d

这有可能与排序有关吗?如果没有,那么使用shell工具实现这种排序的最简单方法是什么?

解决方法:

只需添加-s(稳定排序)标志,这将禁用最后的比较

echo '7 a
3 c
3 b
2 first
2 second
2 third
2 fourth
2 fifth
9 d
2 sixth
' | sort  -k 1,1n -s

2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐