我有两个 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)将另一个文件的更改带到当前文件
DP (d当且仅当页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 就可以使用它:)