GNU 实用程序:排序

GNU 实用程序:排序

我在根据前两列对文件进行排序时遇到问题。

文件的布局是:

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

如果您想要稳定的排序(在出现平局的情况下保留输入行的相对顺序),您需要使用-sor--stable标志。

答案2

如果你希望 GNU 排序为稳定的那么你必须通过-s。否则,具有相同键的记录将根据sort的内部算法以任意顺序出现。

相关内容