2017-04-03 111 views
0

任何人都可以帮助我解决这个问题。使用sed删除图案线

如果PATTERN开始和结束在同一行。 卸下线包括PATTERN

joey people PATTERN we just had 
PATTERN a lot of fun PATTERN 
at my wedding 
We will PATTERN 
have more 
PATTERN fun tomorrow PATTERN 
all are welcome. 

上面一行应该是这样执行后。

joey people PATTERN we just had 
at my wedding 
We will PATTERN 
have more 
all are welcome 
+0

你试过了什么?它是如何失败的? – choroba

+0

'grep -v'PATTERN。* PATTERN''是这样的吗? –

+0

我试过\ sed'/ /{n;//d}'pattern – Rio

回答

0

简单SED方法:

sed '/^PATTERN\(.*PATTERN\)*$/d' file 

^$ - 锚,指向字符串的开始和结束分别

^PATTERN\(.*PATTERN\)*$ - 将匹配开始的所有行并结束(由可选捕获组\(.*PATTERN\)*提供)与PATTERN或续AINS PATTERN作为单个字


使用grep的工具的替代:

grep -v '^PATTERN\(.*PATTERN\)*$' file 

-v--invert-match)的选项,倒置匹配的意义上,以选择不匹配的行。

+0

那些只包含'PATTERN'而没有其他东西的行呢? – choroba

+0

@choroba,好点,固定 – RomanPerekhrest

+0

非常感谢,它的作品。 – Rio