加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何使用sed删除匹配的行,上面的行和它下面的行?

发布时间:2020-12-14 06:31:04 所属栏目:百科 来源:网络整理
导读:我在文件中多次出现以下序列: yyyyxxxxzzzz 我有一个匹配xxxx的正则表达式.每当有匹配时,我想删除该行,前一行(例如yyyy)和它之后的行(例如zzzz).我如何使用sed来做到这一点? 诀窍是存储在“保留空间”中看到的最后一行. sed -n '/^xxxx/{n n x d }x1dp${x
我在文件中多次出现以下序列:
yyyy
xxxx
zzzz

我有一个匹配xxxx的正则表达式.每当有匹配时,我想删除该行,前一行(例如yyyy)和它之后的行(例如zzzz).我如何使用sed来做到这一点?

诀窍是存储在“保留空间”中看到的最后一行.
sed -n '
/^xxxx/{n
        n
        x
        d
       }
x
1d
p
${x
  p
 }
' <input file>

从x – 交换当前输入行与保持空间(x),然后对于第一行不打印任何东西(1d),后续行打印刚从保持空间(p)交换的行,在最后一行line再次交换保持空间并打印其中的内容($x {xp}.这样当我们点击目标行时会发生什么(从/ ^ xxxx /开始) – 将下两行读入模式空间(nn)并将模式空间与保持空间(x)交换 – 这使我们想要打印的下一行保留空间,并且匹配前的行具有模式空间,这是我们不想要的,所以我们放弃它(d)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读