![GNU 实用程序:排序](https://linux22.com/image/1544/GNU%20%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9A%E6%8E%92%E5%BA%8F.png)
我在根据前两列对文件进行排序时遇到问题。
文件的布局是:
1 998688068 PizzaFan Insurance 22.47
5 072821325 Plaisio Computers 26.35
4 998688068 PizzaFan Food 27.32
5 456834578 G.Yannopoulos Medical 91.67
......
我使用了这个命令:
sort -n -k 1,2 "$fpath" -o "$fpath.ordered"
排序结果为:
1 473151252 Goodys Food 7.15
1 951515524 Atlantic SuperMarket 41.32
1 998688068 Atlantic SuperMarket 80.23
1 998688068 PizzaFan Food 61.72
1 998688068 PizzaFan Insurance 22.47
2 094321587 Vasilopoulos SuperMarket 6.50
......
我不明白为什么所有列都要排序(参见第三列和 PizzaFan Insurance)
我认为 -k 1,2 意味着对第 1 列进行排序并解决与第 2 列的关系,但它似乎不起作用。
它与使用相同:
sort -n "$fpath" -o "$fpath.ordered"
答案1
如果您想要稳定的排序(在出现平局的情况下保留输入行的相对顺序),您需要使用-s
or--stable
标志。
答案2
如果你希望 GNU 排序为稳定的那么你必须通过-s
。否则,具有相同键的记录将根据sort
的内部算法以任意顺序出现。