我正在尝试使用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
我希望它不会发现任何差异(也不会报告任何内容)。为什么它发现这些文件是不同的?
发布于 2011-09-23 03:30:39
这是因为diff
使用了基本的正则表达式语法,其中某些正则表达式元字符失去了其特殊含义:
在基本正则表达式中,元字符
?, +, {, |, (, and )
失去了它们的特殊含义;取而代之的是反斜杠版本的\?, \+, \{, \|, \(, and \)
。
这应该是可行的:
.*\$\(Id\|Header\|Date\|DateTime\|Change\|File\|Revision\|Author\):.*\$.*
发布于 2011-09-23 04:39:25
只是为了让你咯咯笑,把-b加入你的diff吧。忽略空格中的差异。
https://stackoverflow.com/questions/7520179
复制相似问题