从<tag>到</tag>通过多行grep并查找里面的特殊字符串

时间:2014-08-23 13:06:44

标签: bash shell

我试过了:pcregrep -M '<activity.*MainActivity(\n|.)*</activity>'

我想通过多行(3x <activity to </activity>)从<activity></activity>获取grep并在两个标记之间查找字符串MainActivity(1x <activity MainActivity <\activity>)并回显这一个只匹配。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

尝试以下命令,

pcregrep -M '(?s)<activity.*?MainActivity.*?<\/activity>' file

(?s)是一个DOTALL修饰符,它允许点甚至匹配新行字符。

pcregrep -M '<activity[\s\S]*?MainActivity[\s\S]*<\/activity>' file

[\s\S]*匹配任何空格或非空格字符零次或多次。 \n\r<spaces><tabs>\s匹配,因此您的正则表达不需要五\n