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

使用AWK比较文本两列按规则生成新列的实现问题

原有代码错误原因
  • 相等判断误用赋值运算符:if($4=$14)中的=是赋值操作,会直接把第14列的值覆盖到第4列,且该判断永远返回真,逻辑完全错误,相等比较需要使用==运算符。
  • 输出逻辑错误:原有代码仅打印新增的第16列,没有输出原有15列的全部内容,无法得到完整的结果文件。
正确实现代码

如果你的文件是制表符分隔,使用以下命令:

awk 'BEGIN{FS=OFS="\t"} NR==1 {print $0, "noneff"} NR>1 { $16 = ($4 == $14) ? $15 : $14; print $0 }' input.txt > output.txt

如果你的文件是空格分隔,去掉BEGIN块的分隔符设置即可:

awk 'NR==1 {print $0, "noneff"} NR>1 { $16 = ($4 == $14) ? $15 : $14; print $0 }' input.txt > output.txt

代码说明

  • NR==1处理表头行,在原有表头末尾新增noneff列名
  • 数据行使用三目运算符做判断:如果第4列与第14列值相等,新增的第16列赋值为第15列的值;否则赋值为第14列的值
  • 最终输出包含原有全部列+新增noneff列的完整行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:03