Regex grep或pcregrep用于多行包装文本模式

Regex grep或pcregrep用于多行包装文本模式,regex,grep,Regex,Grep,我需要一个解决方案,用于在具有行连续字符(如“\”)的文件中进行模式匹配。我有一个包含命令的文件(我的第一个部分模式),然后是任意数量的换行(0到N),然后是我搜索的第二个部分模式 假设我查找任何命令行,其中cmd'mycmd'和参数'myarg'在同一行上,或者在任意数量的换行'\'之后 文件: xcmd xarg xcmd \ xarg xcmd xarg yarg \ myarg \ zarg mycmd myarg mycmd \ xarg mycmd yarg mycmd \

我需要一个解决方案,用于在具有行连续字符(如“\”)的文件中进行模式匹配。我有一个包含命令的文件(我的第一个部分模式),然后是任意数量的换行(0到N),然后是我搜索的第二个部分模式

假设我查找任何命令行,其中cmd'mycmd'和参数'myarg'在同一行上,或者在任意数量的换行'\'之后

文件:

xcmd xarg
xcmd \
 xarg
xcmd xarg yarg \
 myarg \
 zarg
mycmd myarg
mycmd \
 xarg
mycmd yarg
mycmd \
 myarg
mycmd zarg \
 myarg xarg \
 yarg
因此,我的生物学格雷普希望:

mycmd myarg
mycmd \
 myarg
mycmd zarg \
 myarg xarg \
 yarg
如果在prinout中省略了“\”我没问题

我的想法是使用一个regexp来搜索'mycmd',然后是0到N'\+CR',然后是'myarg'

谢谢你的帮助。 Gert

您可以使用此awk:

awk -v cmd="mycmd" -v arg="myarg" '
       $0 ~ cmd && $0 ~ arg {s=1; line=$0; next}
       s && /\\ *$/{line = line RS $0; next}
       s && !/\\ *$/{s=0; print line RS $0}' file

你试过你的想法了吗?效果如何?出了什么问题?试着自己写一些东西,如果不起作用,具体告诉我们你做了什么,这样我们可以帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。如果你先亲自尝试,你很可能会非常接近答案。