在awk程序中,我尝试从包含<<<local>>>
的行和包含模式<<<XXXX>>>
的下一行中选择输入,其中
除了XXXX
之外,local
将是其他任何内容。
<<<local>>>
line1
line2
line3
<<<XXXX>>>
最简单的awk代码是
$0=="<<<local>>>",/^<<<XXXX>>>$/ { ··· }
但XXXX
应替换为正确的正则表达式以排除local
。
据我所知,这可以在python中完成
(?!local)
在Korn shell和其他shell中:
!(local)
但我在regex(7)手册页中没有发现这个问题。
为了绕过这个障碍我使用
$0=="<<<local>>>",/^<<<.+>>>$/ && $0!="<<<local>>>" { ··· }
但是我的这个问题的症结在于,awk
正则表达式引擎接受某个单词列表排除,我的意思是,作为word1|word2|word3
的对应物。
答案 0 :(得分:0)
这会......
awk '/<<<local>>>/{f=1} f; /<<<.*>>>/ && !/<<<local>>>/{f=0}' file
如果您不想终止另一个字词的范围,可以添加到!/<<<(local|other)>>>/