如何确定文件是否只是另一个文件的排列?

如何确定文件是否只是另一个文件的排列?

例如,考虑一个源代码文件,其中的函数被彻底改组。是否有一个命令可以检查行的重新排序是否是唯一的更改?

(这意味着没有添加、删除或更改任何行)

答案1

简单的答案是:“比较两个文件的排序版本”。
bash

diff <(sort file1) <(sort file2)

显然,这并不意味着这两个文件与编程语言的源文件具有相同的语义(假设两者在语法上都是正确的)。

答案2

我提到这个只是因为我希望有人写一个 GNU 版本......

布伦达·S·贝克,前贝尔实验室成员,编写了一个名为重复这做了你想做的事,甚至更多。您可以使用 dup 来比较两个 C 语言系统,并找到某种重复的代码:复制函数和重命名变量或一些此类细微更改。

如果 SCO 的一个有道德的人将 Linux 源代码与珍贵的 SCO“知识产权”进行比较,那么整个 SCOg 惨败本来是可以避免的。

相关内容