【发布时间】:2019-05-30 18:48:34
【问题描述】:
我有一个如下所示的文件:
a: 0
a: 0
a: 0
a: 1
b: 1
c: 1
d: 1
e: 1
f: 1
a: 2
b: 2
c: 2
d: 2
e: 2
f: 2
a: 3
b: 3
c: 3
d: 3
e: 3
f: 3
c: 4
c: 4
c: 4
我想捕获并输出a 和c 形式的所有<a line><anything other than an a or c line><c line> 行,因此输出如下所示:
a: 1
c: 1
a: 2
c: 2
a: 3
c: 3
请注意,开头的a: 0 行和结尾的c: 4 行都没有被捕获,因为它们不遵循我提到的模式。另请注意,a 和 c 行之间的 b 行已被删除。
我一直在尝试使用 Bash 的 pcregrep 进行环视,但还没有找到解决方案。有什么想法吗?
谢谢!
【问题讨论】:
-
为什么用
pcre过于复杂,你试过grep -E '^[ac]'吗? -
你尝试了什么?和
bash有什么关系?你在哪里找到bash提供pcregrep?发布您迄今为止所做的尝试 -
为什么输出的两行之间都有空格?
-
@PS。我编辑了我原来的帖子。我之前遗漏了一些信息。你是对的,你建议的正则表达式解决了我最初写的问题,所以我投了赞成票。
-
@Inian 我更新了我的原始帖子,我遗漏了一些信息。 Re bash,我正在 OS X(终端)上的 bash shell 中编写 pcregrep 命令。到目前为止,我尝试过的一个例子是 pcregrep -M '^a(?=(^b))^c' ,我试图匹配以 'a' 开头的具有 'b' 的行在它前面的一行和一个“c”行,并且只包括“a”和“c”行。
标签: regex bash grep pcre pcregrep