我目前正在研究源代码生成工具。为了确保我的更改不会引入任何新的错误,diff
在我的更改之前和之后的程序输出之间,理论上是一个有价值的工具。
然而,事实证明这比人们想象的要困难,因为该工具import
以半随机排序的方式输出顺序无关紧要的行(如语句、函数声明等)。正因为如此, 的输出diff
被许多更改杂乱无章,实际上只是将行移动到同一文件中的另一个位置。
有没有办法让 diff 忽略这些移动,只输出真正添加或删除的行?
您可以先尝试对它们进行排序。就像是:
sort file-a > s-file-a
sort file-b > s-file-b
diff s-file-a s-file-b
Run Code Online (Sandbox Code Playgroud)
Bash(和 zsh)可以通过进程替换在一行中完成此操作
diff <(sort file-a) <(sort file-b)
Run Code Online (Sandbox Code Playgroud)