考虑一下这个片段:
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这与sort有关吗?如果不是,使用shell工具实现这种排序的最简单方法是什么?
发布于 2013-11-09 01:30:19
只要添加-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发布于 2013-11-09 01:30:38
使用nl添加行号,将行号作为辅助键使用到sort -k2,1中,然后用cut切断行号。或者使用sort -s。:p
发布于 2013-11-09 01:29:49
你在找一种“稳定”的类型。尝试排序-s选项(或者更好地,检查系统上的手册页)。
https://stackoverflow.com/questions/19871321
复制相似问题