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

如何使用sed/awk基于模式匹配提取两个OG匹配行之间的内容

问题说明

现有文本文件包含匹配模式OG的行,文件内容如下:

OG
ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA
OG
FALJFNAFAFNAFJL
AFJLJSLJFLFSLFL
ASJFAJFAKFKAFKK
OG
AJSFLJASFLSFLFF
SJFLAFLAFLFLAFA
ASASFASFOFLJAJF

要求不硬编码指定行号,完全基于模式搜索,打印前两个匹配OG的行之间的内容,预期输出为:

ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA

此前尝试的awk命令无法得到正确结果:

awk '/^OG/{flag=1;next}/^OG/{flag=0}flag' file.txt

正确实现

awk 方案

原命令逻辑缺陷:

  • 第一次匹配到OG就开启打印标记,后续遇到第二个OG关闭标记后,再碰到第三个OG会重新开启标记,会打印多个OG分隔块的内容
  • 没有在匹配到第二个OG后终止程序,会处理完整个文件,存在多余输出

正确命令:

awk '/^OG/{c++; if(c==2) exit; next} c==1' file.txt

执行逻辑:

  • 定义计数器c,每匹配到一行以OG开头的行,计数器加1
  • 当计数器等于2(即命中第二个OG行)时直接退出程序,不处理后续内容
  • 匹配到OG行时跳过当前行(不打印OG本身),计数器等于1时(即处于第一个和第二个OG之间的区间)打印当前行

sed 方案

sed -n '/^OG/{:a;n;/^OG/q;p;ba}' file.txt

执行逻辑:

  • 加-n参数关闭sed默认逐行打印的行为
  • 匹配到第一个OG行后进入循环流程
  • 每次读取下一行内容,若读到的是OG行则直接退出程序,否则打印当前行,继续循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.07 16:15:42