使用sed删除图案线

使用sed删除图案线,sed,Sed,谁能帮我解决这个问题 如果图案开始和结束在同一条线上。 移除包含图案的线条 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 W

谁能帮我解决这个问题

如果图案开始和结束在同一条线上。 移除包含图案的线条

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
简单的sed方法:

sed '/^PATTERN\(.*PATTERN\)*$/d' file
^
$
-锚点分别指向字符串的开头和结尾

^PATTERN\(.*PATTERN\)*$
-将匹配所有以
模式
开头和结尾的行(由可选捕获组
\(.*PATTERN\)*
)或包含
模式
作为单个单词


使用grep工具的替代方案:

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

-v
--invert match
)选项,反转匹配的意义,以选择不匹配的行

你试过什么?它是如何失败的?
grep-v'PATTERN.*PATTERN'
类似的东西?我尝试过\sed'/{n;//d}PATTERN只包含
PATTERN
而不包含其他内容的行如何?这将删除以
PATTERN
开头的行,并包含零个或多个以
PATTERN
结尾的字符串,然后是行的结尾。我认为所需要的是以
PATTERN
开头和结尾的一行,例如
sed'/^\(PATTERN\).\1$/d'文件
@potong,这个
sed'/^\(PATTERN\).\1$/d'文件
不会删除只包含
PATTERN
(如@choroba所述)的行“如果图案以同一行开始和结束。删除包含图案“@poton,我这里好像有两个挑衅者