首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果数值在coreutils排序中相等,则保留原始顺序?

如果数值在coreutils排序中相等,则保留原始顺序?
EN

Stack Overflow用户
提问于 2013-11-09 01:27:03
回答 3查看 1.1K关注 0票数 4

考虑一下这个片段:

代码语言:javascript
复制
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

它的产出如下:

代码语言:javascript
复制
2 fifth
2 first
2 fourth
2 second
2 sixth
2 third
3 b
3 c
7 a
9 d

虽然列表是由第一个字符按数字顺序正确排序的,但对于那些连续的、相等的值,原来的顺序已经被洗牌了。我想获得:

代码语言:javascript
复制
2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-09 01:30:19

只要添加-s (稳定排序)标志,就会禁用最后的比较。

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2013-11-09 01:30:38

使用nl添加行号,将行号作为辅助键使用到sort -k2,1中,然后用cut切断行号。或者使用sort -s。:p

票数 2
EN

Stack Overflow用户

发布于 2013-11-09 01:29:49

你在找一种“稳定”的类型。尝试排序-s选项(或者更好地,检查系统上的手册页)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19871321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档