如何从差异比较中查找和排除字符串正则表达式文字?

时间:2017-05-23 21:11:18

标签: regex linux diff

我正在尝试编写一个linux diff语句来忽略在其中某处有文字字符串的所有行差异。 (在我的情况下,我想忽略带有网址差异的行。)

目前我已经尝试了

diff -I '^insert.*' file1.txt file2.txt > outputDiff.txt

这里的输出取出了以insert开头的行,所以这是向正确方向迈出的一步,但我需要删除一个带有大量句点和斜杠的更长的字符串文字(url)。 / p>

确切地说:我需要寻找具有以下内容的行:

ta.com/nmo/nmdr/templates/nmdr.css\

在其中的某个地方,将它们从差异结果中排除。

如何查找带有可在diff -I语句中使用的正则表达式的文字字符串? (如果我的diff语句需要,则包括行的开头和行的结尾)

2 个答案:

答案 0 :(得分:0)

您需要在正则表达式中转义setTimeout.

\

答案 1 :(得分:0)

在一个命令中:

diff -I 'ta\.com/nmo/nmdr/templates/nmdr\.css\\' file1.txt file2.txt \
  > outputDiff.txt

这是转义特殊.字符(通常表示“任何字符”),也处理字面反斜杠。

或者,您可以在链式命令中执行此操作(效率稍低):

diff file1.txt file2.txt | fgrep -v 'ta.com/nmo/nmdr/templates/nmdr.css\\' \
  > outputDiff.txt

fgrep或等效grep -F代表“快速grep”并自动转义特殊字符,例如.