我喜欢使用UNIX -u
实用程序的sort
选项来根据列的特定子集获取唯一行,例如: sort -u -k1,1 -k4,4
我在UNIX sort
和GNU sort
文档中广泛查看过,我找不到任何保证 -u
选项将返回第一个实例(如uniq
实用程序) 按指定键排序后。
它似乎在实践中按照需要工作(按键排序,然后给出每个唯一键组合的第一个实例),但我希望文档中的某种保证可以让我的偏执轻松。
有谁知道这样的保证?
答案 0 :(得分:1)
我认为这样一个小实用程序的代码可能是您唯一能找到这种保证的地方。如果您想了解它的工作原理,也可以启用更多调试输出。
如果查看GNU BaseProtocol
的代码,似乎在所有排序完成之后,当它迭代排序过程创建的临时文件的排序内容时,就会发生唯一性测试。
这发生在while loop中,用于将前一行sort
与savedline
进行比较,smallest
是输出的下一个最小输入行。
因此,我的意见是,它将首先处理您的排序标准,然后在最后一步将输出唯一。