我有一份文件:
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之外,我想匹配匹配,我可以使用:
pcregrep -vM 'This error\n.*\n.*\n' file它提供了产出:
[text I want]
[text I want]
[text I want]但是,如果要使用相同的命令(通过删除v)来匹配它们,则不需要删除它们:
pcregrep -M 'This error\n.*\n.*\n' file它提供了产出:
This error
-this
-this
This error
-asd
-asfag
This error
-asdgsda
-asdgg那么pcregrep实际上是如何工作的呢?
发布于 2019-07-16 06:26:26
将.*添加到regexp的末尾。
pcregrep -M 'This error\n.*\n.*\n.*' file
pcregrep -vM 'This error\n.*\n.*\n.*' file我不知道这是否是错误造成的,但似乎-v在上次匹配的\n之后也排除了完整的行,但没有-v就没有。因此添加.* (即不用\n结束regexp )使它在这两种情况下都显式地匹配最后一行,因此不会触发问题/特性。
https://unix.stackexchange.com/questions/530373
复制相似问题