使用awk对比同文件两列数值并输出判定结果到新列的问题
awk对比两列数值并新增标识列解决方案
原命令问题分析
- 未单独处理表头行,导致表头字符串参与数值比较,逻辑完全错位
OFS="\t"写在了模式匹配位而非动作块中,分隔符设置不生效- 仅输出了第三列的判定结果,没有保留原文件前两列内容
正确修改后的命令
awk 'BEGIN{OFS="\t"} NR==1{print $0; next} {print $0, ($1 > $2 ? "here is major" : "here is less")}' file.txt > file2.txt
命令说明
BEGIN{OFS="\t"}:预处理阶段设置输出分隔符为制表符,保证列对齐效果NR==1{print $0; next}:判定为第一行表头时,直接输出整行内容,跳过后续数值比较逻辑- 数据行处理逻辑:先输出原有整行内容,再追加判定结果,通过三目运算符简化判断:第一列数值大于第二列时输出
here is major,否则输出here is less
内容的提问来源于stack exchange,提问作者Gina
相关产品推荐
相关产品推荐

