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

如何用awk为CSV文件添加列并在末尾列写入多列求和结果?

解决方案

针对你的样本数据的awk实现

直接使用以下awk命令即可生成目标输出:

BEGIN { FS = OFS = "," }
NR == 1 { print $0, "salary"; next }
{ sum = $3 + $4 + $5; print $0, sum }

命令解释:

  • BEGIN { FS = OFS = "," }:在处理任何行之前,设置**输入字段分隔符(FS)和输出字段分隔符(OFS)**为逗号,保证输入输出都符合CSV格式,避免字段错位。
  • NR == 1 { print $0, "salary"; next }:处理第一行表头,在原有表头末尾追加salary列名,next跳过当前行的后续逻辑,直接处理下一行。
  • { sum = $3 + $4 + $5; print $0, sum }:对数据行,计算第3、4、5列(basic_sal、Allowance、Perk)的和,然后打印原有行内容加上求和结果。

你可以直接在终端运行以下命令处理文件:

awk 'BEGIN{FS=OFS=","} NR==1{print $0,"salary";next} {sum=$3+$4+$5;print $0,sum}' input.csv > output.csv

将input.csv替换为你的实际文件名,结果会保存到output.csv中。


通用场景:CSV添加多列并在最后一列写入求和值

如果需要先添加多列(比如自定义计算的列),再对指定列求和,可参考以下思路:

示例:添加bonus、tax列后计算总薪资

BEGIN { FS = OFS = "," }
NR == 1 { print $0, "bonus", "tax", "total_salary"; next }
{
    # 自定义计算新增列的值
    bonus = $3 * 0.1;       # 以basic_sal的10%作为奖金
    tax = ($3 + $4 + $5 + bonus) * 0.2; # 计算税额
    
    # 求和指定列(基础薪资+补贴+ perk+奖金-税额)
    total = $3 + $4 + $5 + bonus - tax;
    
    # 打印原有内容+新增列+求和结果
    print $0, bonus, tax, total
}

关键注意事项:

  • 始终同步设置FS和OFS为CSV的分隔符(通常是逗号),确保输出格式正确。
  • 表头行必须对应添加所有新列的名称,保持结构一致。
  • 如果CSV中存在非数字内容,需要先做判断(比如用$3 ~ /^[0-9]+$/检查是否为整数),避免计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:15:10