gpt4 book ai didi

shell - 仅当存在第 3 个模式时 SED 删除(包括)2 个模式之间

转载 作者:行者123 更新时间:2023-12-01 03:43:29 24 4
gpt4 key购买 nike

我会保持简短。我想使用 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
}

关于shell - 仅当存在第 3 个模式时 SED 删除(包括)2 个模式之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29129221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com