【发布时间】:2014-09-11 15:43:05
【问题描述】:
一直在这里搜索并接近但似乎仍然不是我想要做的。例如。请考虑以下示例测试输入,目标是找到跨越多行的匹配,这些匹配以包含“abc”的行(打印此行)开始,并以包含“efg”的行结束(也打印此行),并且打印中间的线条。
yyabc}
000
iiabc<
{efg+1}
111
yyabc}
222
p {efg+13}
zzz
z {efg+243} {}
iii
oooabc>
ooo
最接近我正在寻找的是,以 zzz 作为上面几行的测试输入文件,
sed -e '/abc/,/efg/!d' zzz
,但包含额外的行,不介意不在,
yyabc} <<***** extra
000 <<***** extra
iiabc<
{efg+1}
yyabc}
222
p {efg+13}
oooabc> <<***** extra
ooo <<***** extra
,因此预期的输出是,
iiabc<
{efg+1}
yyabc}
222
p {efg+13}
除了依赖 pcregrep (我在 linux 盒子里有其他所有东西),有没有可以产生这样多行匹配的解决方案?
非常感谢。
【问题讨论】: