如何忽略diff命令的一些差异?

Vah*_*agn 29 linux bash diff vimdiff

diff有一个选项-I regexp,它忽略只插入或删除与给定正则表达式匹配的行的更改.我需要对这种情况进行类比,当两行之间发生变化时(而不是插入或删除行).

例如,我想忽略所有差异,例如,"abXd""abYd"给定XY.

似乎diff没有这种能力.有没有合适的替代品diff

Joh*_*ica 23

您可以过滤这两个文件,sed以消除您不关心的行.一般模式是/regex1/,/regex2/ d删除匹配两个正则表达式的行之间的任何内容.例如:

diff <(sed '/abXd/,/abYd/d' file1) <(sed '/abXd/,/abYd/d' file2)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答。`sed '/regex/d' file` 删除 `file` 中所有匹配 `regex` 的行。有没有办法不删除该行而只删除它的匹配部分? (2认同)

小智 19

改进John Kugelman 早期的解决方案:

diff <(sed 's/ab[XY]d/abd/g' file1) <(sed 's/ab[XY]d/abd/g' file2)
Run Code Online (Sandbox Code Playgroud)

可能是你可能正在寻找的!此版本规范化每行的特定更改,而不删除行本身.这允许diff显示线上剩余的任何其他差异.