linux - 如果 coreutils 排序中的数值相等,是否保留原始顺序?

标签 linux bash sorting gnu-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

这可能与 sort 相关吗?如果没有,使用 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

关于linux - 如果 coreutils 排序中的数值相等,是否保留原始顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871321/

相关文章:

java - 如何在 Java 中按字母顺序对枚举成员进行排序?

python - 如何忽略 SIGKILL 或强制进程进入 'D' sleep 状态?

bash - Jupyter/iPython Notebook 的根访问权限

c# - 如何按列表使用的对象内的元素对列表进行排序?

javascript - 对具有多个条件的对象进行排序

bash - bash脚本-字符串比较产生意外结果

c - 在没有 lseek() 的情况下写入和读取 linux/proc/... 文件系统

检查目录路径以 "."、 ".."结尾

linux - 如何降低 GCC 中的编译成本和 make?

bash - 在(bash)脚本之间传递带有空格的参数