我需要一个带有行继续符(如'\')的文件中的模式匹配解决方案。我有一个包含命令的文件(我的第一个部分模式),然后是任意数量的换行符(零到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
出于我的生物grep预期:
mycmd myarg
mycmd \
myarg
mycmd zarg \
myarg xarg \
yarg
如果在打印输出中省略'\',我很好。
我的想法是有一个正则表达式,搜索“mycmd”后跟0到N'\ + CR'后跟'myarg'。
感谢您的帮助。 格特
答案 0 :(得分:0)
你可以使用这个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