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

AWK如何为分隔符分割的每组内所有行添加相同连续序号前缀

解决方案

你可以直接用更简单的行处理逻辑实现需求,无需修改记录分隔符:

awk '/^####$/{group++;next} {print "Group" (group+1) "," $0}' file.txt

原命令错误原因

  1. 将RS设为####后,awk读取的每一段记录会包含块前后的换行符,直接在块前拼接组号前缀时,就会出现组号单独占一行的问题
  2. 文件末尾的####之后存在空内容,会被识别为额外的有效记录,导致多输出了Group4

原思路的修正版本

如果你想保留修改记录分隔符的实现方式,可以对每个块内的行单独处理:

awk 'BEGIN{ RS="####\n?" }
$0 {
    # 去除块末尾的多余换行
    gsub(/\n$/, "", $0)
    # 按换行拆分块为单独的行
    split($0, lines, "\n")
    # 遍历所有行添加相同组号输出
    for (idx in lines) {
        print "Group" (group+1) "," lines[idx]
    }
    group++
}' file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:48:02