我会保持这个简短.我想使用sed删除文件中的文本集.基本上这是我的一个例子:
textbefore
PATTERN 1
text1
PATTERN 3
text2
PATTERN 2
PATTERN 1
text3
text4
text5
PATTERN 2
textafter
我想要发生的是PATTERN 1到PATTERN 2(包括),但只有它在两者之间包含PATTERN3.
这基本上是我想看到的:
textbefore
PATTERN 1
text3
text4
text5
PATTERN 2
textafter
任何帮助,将不胜感激
最佳答案 至少与GNU sed一起使用.
sed '/PATTERN 1/{:a;/PATTERN 2/bb;N;ba;:b;/PATTERN 3/d;}' file
评论:
#!/usr/bin/sed
/PATTERN 1/ { # when start pattern is seen
:a
/PATTERN 2/ bb # goto "b" if end pattern seen
N # append next line to pattern space
ba # and goto "a"
:b
/PATTERN 3/ d # if this "block" contains patt, delete
}