我需要进行文件比较,但我想要排除掉注释。目前得到的结果如下:
我使用了以下命令:diff -b -B [patch] [patch]
,它给出的结果是:
< #<Location /bancochile>
< # WeblogicHost bgri.wls.ri
< # WeblogicPort 20015
< # SetHandler weblogic-handler
< #</Location>
<
45c39,43
正如 @chepner所建议的,GNU diff
明确支持此目的:
diff -I '^[[:space:]]*[#]' -b -B old.cfg new.cfg
话虽如此,如果你只想知道是否有变化,使用 cmp
更加高效:
if cmp -s <(grep -E -v '^[[:space:]]*[#]' <old.cfg) \
<(grep -E -v '^[[:space:]]*[#]' <new.cfg); then
echo "Excluding comments, these files are identical"
fi
我建议使用bash:
diff -b -B <(grep -v '^#' patch1) <(grep -v '^#' patch2)
diff
的输出通过管道传递给grep -v
,以过滤掉您不想要的行。 - Barmardiff
的-I
选项? - chepnerdiff
的工作。cmp
可以更快地完成这个更简单的任务。 - Charles Duffy