UNIX排序唯一保证首先给出

时间:2016-03-28 15:22:21

标签: sorting unix uniq

我喜欢使用UNIX -u实用程序的sort选项来根据列的特定子集获取唯一行,例如: sort -u -k1,1 -k4,4

我在UNIX sort和GNU sort文档中广泛查看过,我找不到任何保证 -u选项将返回第一个实例(如uniq实用程序) 按指定键排序后。

它似乎在实践中按照需要工作(按键排序,然后给出每个唯一键组合的第一个实例),但我希望文档中的某种保证可以让我的偏执轻松。

有谁知道这样的保证?

1 个答案:

答案 0 :(得分:1)

我认为这样一个小实用程序的代码可能是您唯一能找到这种保证的地方。如果您想了解它的工作原理,也可以启用更多调试输出。

如果查看GNU BaseProtocol的代码,似乎在所有排序完成之后,当它迭代排序过程创建的临时文件的排序内容时,就会发生唯一性测试。

这发生在while loop中,用于将前一行sortsavedline进行比较,smallest是输出的下一个最小输入行。

因此,我的意见是,它将首先处理您的排序标准,然后在最后一步将输出唯一。