首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pcregrep是如何工作的?

pcregrep是如何工作的?
EN

Unix & Linux用户
提问于 2019-07-16 05:01:44
回答 1查看 1.2K关注 0票数 0

我有一份文件:

代码语言:javascript
复制
This error
-this
-this
-that
[text I want]
This error
-asd
-asfag
-adsfhs
[text I want]
[text I want]
This error
-asdgsda
-asdgg
-gasdg

除了This error and next three lines之外,我想匹配匹配,我可以使用:

代码语言:javascript
复制
pcregrep -vM  'This error\n.*\n.*\n' file

它提供了产出:

代码语言:javascript
复制
[text I want]
[text I want]
[text I want]

但是,如果要使用相同的命令(通过删除v)来匹配它们,则不需要删除它们:

代码语言:javascript
复制
pcregrep -M  'This error\n.*\n.*\n' file

它提供了产出:

代码语言:javascript
复制
This error
-this
-this
This error
-asd
-asfag
This error
-asdgsda
-asdgg

那么pcregrep实际上是如何工作的呢?

EN

回答 1

Unix & Linux用户

发布于 2019-07-16 06:26:26

.*添加到regexp的末尾。

代码语言:javascript
复制
pcregrep -M  'This error\n.*\n.*\n.*' file
pcregrep -vM 'This error\n.*\n.*\n.*' file

我不知道这是否是错误造成的,但似乎-v在上次匹配的\n之后也排除了完整的行,但没有-v就没有。因此添加.* (即不用\n结束regexp )使它在这两种情况下都显式地匹配最后一行,因此不会触发问题/特性。

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

https://unix.stackexchange.com/questions/530373

复制
相关文章

相似问题

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