繁体   English   中英

sed匹配3行模式并删除2

[英]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
  • 假设紧随其后的是3行,而您没有line1 + line1 + line2 + line3之类的东西
  • s//是示例,它可以直接集成模式测试的最后一个级别(因此仅需要2个级别的patternm匹配+ 1个替换)。
  • d无法直接使用,因为它会立即删除整个缓冲区的内容,并且该缓冲区通常是当前行,除非您像N操作一样向当前缓冲区添加内容
    • 模式现在是您要使用正则表达式的问题( <pre> abc def ghi </pre>是1行,因此此代码无法工作,因为它需要3行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM