【问题标题】:Select line matching pattern +1选择行匹配模式+1
【发布时间】:2021-12-29 05:22:16
【问题描述】:

如何使用 sed 选择匹配模式的每一行 + 下一行? 例如,我想选择所有带有 tag="foo" 的行加上下一行。 作为替代方案,我还希望能够选择带有 tag="foo"group="bar" 的行加上下一行。

【问题讨论】:

  • 您应该考虑使用 awk 而不是 sed,因为 awk 的作用更加明显。
  • 说到这里,我认为这样的事情可能对你有用:sed -n '/pattern/ { N; p }'
  • 或者,sed -n '/foo/{N;p;D}' file

标签: sed


【解决方案1】:

这可能对你有用(GNU sed):

sed -En '/tag="foo"|group="bar"/,+1p' file

打开扩展正则表达式-E 并关闭隐式打印-n

匹配tag="foo"group="bar" 的交替并打印范围+1 行。


替代方案:

sed '/tag="foo"\|group="bar"/!d;n' file

要始终打印 2 行,请使用:

sed -n '/tag="foo"\|group="bar"/{N;p}' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多