我正在尝试使用此处记录的bash实用程序“diff”:http://ss64.com/bash/diff.html。请注意,我使用的是bash实用程序的Windows端口版本,但这不应该有任何区别。
我有两个文件,regex_test_1.txt和regex_test_2.txt,其中包含以下内容:
regex_test_1.txt:
// $Id: some random id string $ more text
text that matches
regex_test_2.txt:
// $Id: some more random id string $ more text
text that matches
我正在尝试区分这些文件,同时忽略任何适合此正则表达式的行:
.*\$(Id|Header|Date|DateTime|Change|File|Revision|Author):.*\$.*
但是,当我运行diff并告诉它使用-I参数忽略与此正则表达式匹配的行时,这是输出:
C:\Users\myname\Documents>diff -q -r -I ".*\$(Id|Header|Date|DateTime|Change|File|Revision|Author):.*\$.*" regex_test_1.txt regex_test_2.txt
Files regex_test_1.txt and regex_test_2.txt differ
我希望它不会发现任何差异(并且不报告任何内容)。为什么发现这些文件不同?
答案 0 :(得分:4)
这是因为diff
使用基本的正则表达式语法,其中某些正则表达式元字符失去了它们的特殊含义:
在基本正则表达式中,元字符
?, +, {, |, (, and )
失去了它们的特殊含义;而是使用反斜杠版本\?, \+, \{, \|, \(, and \)
。
这应该有效:
.*\$\(Id\|Header\|Date\|DateTime\|Change\|File\|Revision\|Author\):.*\$.*
答案 1 :(得分:0)
只是为了咯咯笑,将-b添加到你的差异中。忽略空白区别。