You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印两个匹配模式间的行(结束模式可选)

解决方案:提取包含完整TAG1-TAG2对的文本块

针对文件中存在无对应TAG2的TAG1的情况,可通过AWK精准提取有完整闭合(从TAG1开始到TAG2结束)的文本块,忽略未闭合的TAG1内容。

示例输入文件(file.txt)

aa

TAG1
some right text
TAG2

some text2

TAG1
some text3

TAG1
some text4

TAG1
some right text 2
TAG2

some text4

TAG1
some text5
some text6

期望输出

TAG1
some right text
TAG2

TAG1
some right text 2
TAG2

AWK命令实现

/TAG1/ {
    buf = $0 ORS
    next
}
buf != "" {
    buf = buf $0 ORS
    if (/TAG2/) {
        printf "%s", buf
        buf = ""
    }
}

命令说明

  • 匹配到TAG1时,初始化缓冲区buf存入当前行并换行,直接进入下一行处理。
  • 缓冲区非空时(已捕获TAG1),将当前行追加到缓冲区。
  • 若当前行匹配到TAG2,打印缓冲区内容并清空,完成一个完整块的提取。
  • 未遇到TAG2的TAG1对应的缓冲区内容会被自动丢弃,实现忽略未闭合块的效果。

内容的提问来源于stack exchange,提问作者satya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:15:34