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

如何用awk/bash脚本对文本文件两列做减法并新增列存储结果

awk处理制表符分隔txt文件新增计算列方案

原有代码问题说明

第一段代码错误点

  • 未指定输入字段分隔符FS="\t",awk默认按任意空白拆分列,如果文件内容中包含空格,会导致列索引识别错位,出现计算结果存到第2列的问题
  • 表头字段填写为tr_pe,和需求的tr_pre不符
  • 未做输出重定向,执行结果只会输出到终端,不会写入原文件

第二段代码错误点

  • 语法错误,单引号未配对,大括号转义逻辑错误,执行逻辑不符合预期
  • 未单独处理表头行,新增列无表头
  • 未指定输入字段分隔符,列识别错误导致计算结果不准
  • 用$(NF+1)是在当前最后一列后新增内容,若原文件列数不等于19,新增列不会是第20列

正确实现代码

生成新文件(推荐,避免损坏原文件)

awk 'BEGIN{FS=OFS="\t"} NR==1{$20="tr_pre"} NR>1{$20=$5-$11}1' 原文件名.txt > 处理后文件名.txt

就地修改原文件(需提前备份)

仅支持GNU awk(绝大多数Linux发行版默认预装):

# 先备份原文件
cp 原文件名.txt 原文件名.txt.bak
# 执行修改
gawk -i inplace 'BEGIN{FS=OFS="\t"} NR==1{$20="tr_pre"} NR>1{$20=$5-$11}1' 原文件名.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:07