首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash "diff“实用程序在使用正则表达式忽略时将文件显示为不同

Bash "diff“实用程序在使用正则表达式忽略时将文件显示为不同
EN

Stack Overflow用户
提问于 2011-09-23 03:17:03
回答 2查看 838关注 0票数 2

我正在尝试使用bash实用程序"diff“,这里提供了这个工具:http://ss64.com/bash/diff.html。请注意,我使用的是bash实用程序的windows移植版本,但这不会有什么不同。

我有两个文件,regex_test_1.txt和regex_test_2.txt,它们包含以下内容:

regex_test_1.txt:

代码语言:javascript
运行
复制
// $Id: some random id string $ more text

text that matches

regex_test_2.txt:

代码语言:javascript
运行
复制
// $Id: some more random id string $ more text

text that matches

我正在尝试比较这些文件,同时忽略任何符合此正则表达式的行:

代码语言:javascript
运行
复制
.*\$(Id|Header|Date|DateTime|Change|File|Revision|Author):.*\$.*

但是,当我运行diff并使用-I参数告诉它忽略与此正则表达式匹配的行时,输出如下:

代码语言:javascript
运行
复制
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

我希望它不会发现任何差异(也不会报告任何内容)。为什么它发现这些文件是不同的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 03:30:39

这是因为diff使用了基本的正则表达式语法,其中某些正则表达式元字符失去了其特殊含义:

在基本正则表达式中,元字符?, +, {, |, (, and )失去了它们的特殊含义;取而代之的是反斜杠版本的\?, \+, \{, \|, \(, and \)

这应该是可行的:

代码语言:javascript
运行
复制
.*\$\(Id\|Header\|Date\|DateTime\|Change\|File\|Revision\|Author\):.*\$.*
票数 4
EN

Stack Overflow用户

发布于 2011-09-23 04:39:25

只是为了让你咯咯笑,把-b加入你的diff吧。忽略空格中的差异。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7520179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档