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

如何用awk实现3字段起始行的分组数据行合并

解决方案

可以用以下awk脚本实现需求:

NF == 3 {
    if (line != "") {
        print line
        line = ""
    }
    sub(/^[[:space:]]+/, "", $0)
    line = $0
    next
}
{
    line = line " " $0
}
END {
    if (line != "") {
        print line
    }
}

代码说明:

  • NF == 3:匹配仅含3个字段的行
    • 如果line变量不为空(说明已累积一组数据),先打印该组数据并换行,随后清空line
    • sub(/^[[:space:]]+/, "", $0):删除当前行的所有行首空格
    • 将处理后的当前行赋值给line,跳过后续逻辑
  • 其他行:直接将当前行内容以空格分隔追加到line变量后
  • END块:处理最后一组数据,确保最后一行能正常输出

将脚本保存为merge.awk,执行以下命令即可得到目标格式:

awk -f merge.awk input.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:40:22