Regex grep或pcregrep用于多行包装文本模式
我需要一个解决方案,用于在具有行连续字符(如“\”)的文件中进行模式匹配。我有一个包含命令的文件(我的第一个部分模式),然后是任意数量的换行(0到N),然后是我搜索的第二个部分模式 假设我查找任何命令行,其中cmd'mycmd'和参数'myarg'在同一行上,或者在任意数量的换行'\'之后 文件: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 \
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
你试过你的想法了吗?效果如何?出了什么问题?试着自己写一些东西,如果不起作用,具体告诉我们你做了什么,这样我们可以帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。如果你先亲自尝试,你很可能会非常接近答案。