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

UNIX Shell匹配文本分隔标记新增SEQ序列列实现方案咨询

问题背景

需要匹配文本中两个指定字符串界定的内容块,为每个内容块的行新增SEQ序列列,以ID CLOSED作为内容块的分隔标记,第一个内容块内所有行末尾追加序列值1,第二个内容块追加序列值2,依次类推,最终过滤掉所有ID CLOSED行。

输入示例

1|AB|1|2            
2|BC|1|2                          
ID CLOSED                           
3|AB|1|2                
4|BC|1|2                      
ID CLOSED   

预期输出

1|AB|1|2|1   
2|BC|1|2|1  
3|AB|1|2|2   
4|BC|1|2|2  
实现方案

这类需要维护计数状态的文本处理场景,用awk实现比sed更简洁高效,直接执行以下命令即可:

awk '/^ID CLOSED/{seq++; next} {print $0 "|" seq+1}' 输入文件路径

命令逻辑说明

  • 当匹配到行首为ID CLOSED的分隔行时,将序列计数器seq加1,且直接跳过当前行不输出
  • 对普通业务行,直接输出原行内容,末尾拼接分隔符|和当前序列值(初始seq为0,所以第一个内容块的序列值为0+1=1,符合需求的序列递增规则)

如果坚持要用sed实现,需要结合shell循环遍历内容块,实现复杂度更高,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:18:00