我试图匹配3个不同模式的3行,一个接一个地匹配,并且仅使用sed删除第一个和最后一个:
patternABC
patternDEF
patternGHI
我使用这样的东西,当然会删除所有的行,但我需要保留patternDEF并删除只有patternABC和patternGHI。
sed -e '/patternABC/{N;/patternDEF/{N;/patternGHI/d}}'
答案 0 :(得分:0)
sed -e '/patternABC/{
N
/\n.*patternDEF/{
N
/.*patternABC.*\(\n.*patternDEF.*\)\n.*patternGHI.*/ {
s//\1/
}
}
}' YourFile
s//
用于示例,它可以直接集成最后一级模式测试(因此只需要2级模式匹配+ 1个替换)。d
无法直接使用,因为它会立即删除整个缓冲区内容,缓冲区通常是当前行,除非您向当前缓冲区添加内容,例如N
操作
<pre> abc def ghi </pre>
是1行所以这段代码无法工作,因为它需要3行)