我如何才能比较两个配置文件的差异?

我如何才能比较两个配置文件的差异?

我有两个 snmpd.conf 文件,一个在服务器上可以运行,另一个在服务器上不能运行。如何区分这两个配置文件,同时删除不相关的注释和换行符?

答案1

diff <(grep -v '^#' f1) <(grep -v '^#' f2)

为了避免出现空行和仅包含空格的行,以及在相同的行中仅在前导空格处添加了一个差异...

diff -b \
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f1)\
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f2)

不过,到此时,我可能会将其放入脚本中,并编写一些类似于原始建议的、可读性更强的内容。

答案2

如果你觉得vim,我强烈建议你使用差分

vimdiff file1 file2

这将打开一个包含两个窗格的 vim 会话,每侧各一个文件。突出显示和颜色将指示文件之间的差异,所有相同的部分将被隐藏(折叠,但可展开)。

然后,如果您想有选择地将一个文件的差异合并到另一个文件中,您可以使用以下命令:

(将“当前文件”视为光标所在的文件)

^W^W 将焦点从一个文件的窗口更改到另一个文件的窗口

]C 进入下一个有差异的区块

[C 反向搜索前一个有差异的区块

d当且仅当obtain)将另一个文件的更改带到当前文件

DPd当且仅当ut)将当前文件的更改发送到另一个文件

注意:两者DP如果您在一个块上或仅在块下的一行上,则可以工作。

恩多

展开/取消隐藏文本

重新折叠/隐藏文本

将完全展开两个文件(使用:帮助折叠有关折叠的更多信息)

:diffupdate将重新扫描文件以查找更改

当您开始移动更改的文本或引入更改时,文件现在相同的部分也会自动折叠。

完成后,你可以退出并使用以下命令写入两个文件:XA!

您还可以一次在一个窗格中写入、退出、放弃更改等,就像通常使用 vim 一样。

您可以使用所有常见的 vim 命令随意编辑文件;我仅描述了您可能在 vimdiff 会话(而不是通用 vim 会话)中使用的最常见和最有用的命令。

答案3

Beyond Compare 就是实现这一目标的终极工具!

关联: http://www.scootersoftware.com/

适用于 Windows 和 Linux。

Jeff 不久前写了一篇关于该工具的很好的概述文章:
http://www.codinghorror.com/blog/archives/000454.html

答案4

清理评论后,我建议使用 KDiff3,它是一款非常好的差异/合并工具,而且不需要 vim fu 就可以使用它:)

相关内容