tas*_*ket 2 sort merge indexing
我正在对一组连接的索引文件进行唯一排序,其中第一列有时会在每个索引之间发生变化,而第二列将是一个键值(实际上是十六进制地址)。每个 indexN 文件迭代都会记录自上次以来更改的地址——如果地址 0xaa11 存在于 index3 中,则在合并+排序的输出中,它应该替换来自 index1 和 index2 的 0xaa11 地址引用。
问题是,如果我只是按特定顺序将每个源索引通过管道传输,我能否使用像 GNU这样的工具可靠地进行这种类型的合并?sort
sort -u
例如,管道索引从新到旧:
cat index3 index2 index1 | sort -u -k 2,2
Run Code Online (Sandbox Code Playgroud)
当我对此进行测试时,它似乎确实保留了 index3 中包含也出现在 index2 和 index1 中的地址的行,同时删除了来自 index2 和 index1 的重复引用。
但情况会一直如此吗?该sort
手册页是模糊的这个问题:
-u --unique output only the first of an equal run
Run Code Online (Sandbox Code Playgroud)
我对 GNU sort 的算法知之甚少,无法预测具有匹配键的行是否总是按照源文件连接的相同顺序进行排序(例如,它们在源流中出现的顺序)。但我知道排序算法并不总是以线性方式工作。这就是为什么我要澄清文档似乎暗示的内容。