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

如何使用一行Shell脚本提取每组连续匹配行的第一行?

提取连续匹配行分组首行的Shell单行实现

直接给出逻辑清晰、无晦涩语法的awk实现,和你提到的Python状态变量实现思路完全一致:

awk '/interesting line/{ if(flag == 0) print; flag = 1 } !/interesting line/{ flag = 0 }' 输入文件名

逻辑说明

  • 内置变量flag作为状态标记,默认初始值为0,表示当前不在连续匹配分组中
  • 当行匹配interesting line规则时:
    • 若flag为0,说明当前行是新分组的第一行,直接打印
    • 将flag置为1,后续同分组的匹配行不会重复打印
  • 当行不匹配规则时,将flag重置为0,等待下一个分组的首行

效果验证

针对你给出的测试输入,执行上述命令后输出完全符合预期:

interesting line 1
interesting line 3
interesting line 6

如果需要处理管道流,直接把输入通过管道传给awk即可:

cat 输入文件名 | awk '/interesting line/{ if(flag == 0) print; flag = 1 } !/interesting line/{ flag = 0 }'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:18:05