[英]sed match 3 lines patterns and delete 2
我正在尝试匹配3种匹配3种不同模式的行,一个接一个,并仅删除sed的第一个和最后一个:
patternABC
patternDEF
patternGHI
我使用的是这样的东西,它当然会删除所有行,但是我需要离开patternDEF并仅删除patternABC和patternGHI。
sed -e '/patternABC/{N;/patternDEF/{N;/patternGHI/d}}'
sed -e '/patternABC/{
N
/\n.*patternDEF/{
N
/.*patternABC.*\(\n.*patternDEF.*\)\n.*patternGHI.*/ {
s//\1/
}
}
}' YourFile
s//
是示例,它可以直接集成模式测试的最后一个级别(因此仅需要2个级别的patternm匹配+ 1个替换)。 d
无法直接使用,因为它会立即删除整个缓冲区的内容,并且该缓冲区通常是当前行,除非您像N
操作一样向当前缓冲区添加内容
<pre> abc def ghi </pre>
是1行,因此此代码无法工作,因为它需要3行)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.