配置文件的差异仅显示未注释的行

配置文件的差异仅显示未注释的行

考虑需要使用“diff”来比较具有许多注释行的两个文件,例如系统配置文件。 (例如,文件可以是 /etc/cups/cups-files.conf.pacnew 和 /etc/cups/cups-files.conf。)

我想忽略任何被注释掉的行的差异如下:

< #DocumentRoot /usr/share/cups/doc
---
> #DocumentRoot /usr/share/cups/doc-root

我只想查看活动(未注释)行的差异。

(我还想忽略空白差异。为了完整性,我提到这一点,以防上述解决方案干扰使用该-w选项。)

答案1

您可以在比较文件之前过滤注释行:

diff -u -w <(grep -v '^[[:space:]]*#' /etc/cups/cups-files.conf.pacnew) <(grep -v '^[[:space:]]*#' /etc/cups/cups-files.conf)

这样diff只会看到未注释的行,并且只会比较它们。

相关内容