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

使用AWK拆分CSV列插入新列并实现单行输出与空格修剪

AWK拆分字段插入并修剪空白解决方案

修正后可直接运行的代码

#!/bin/awk
# 自定义trim函数:去除字符串首尾空白
function trim(s) {
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", s)
    return s
}

BEGIN {
    FS = ","
    OFS = ","
}
{
    # 先修剪原有所有字段的首尾空白
    for(i=1; i<=NF; i++) {
        $i = trim($i)
    }

    # 拆分第二列内容
    split($2, a, "|")
    split(a[2], b, "@")

    # 构造完整输出行:原$1、$2 + 拆分的三个字段 + 原$3及之后的所有字段
    print $1, $2, trim(a[1]), trim(b[1]), trim(b[2]), substr($0, index($0, $3))
}

关键调整说明

  • 解决单行输出问题:原来的代码先执行print会自动追加换行符,导致后续字段拆成两行。调整后一次性构造完整行再输出,所有字段自动用OFS(逗号)分隔,保证是单行逗号分隔格式。
  • 解决空白修剪问题:新增通用trim函数,先统一修剪原有所有字段的首尾空白,拆分出来的子字段也经过trim处理,输出的所有列都不会有多余的首尾空格。

执行命令保持不变即可:awk -f insert.awk insert.txt > output.txt,运行后得到的output.txt和你期望的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:15:05