如何使用具有列名称的awk创建列

时间:2016-05-31 19:57:11

标签: linux awk

我有csv文件,如下面的

 Name    Amount     Interest
 JB      10000       0.5
 Jefh    50000       1.25
 John    20000       0.25

我想使用awk添加一个列,如follwoing

Name    Amount     Interest    Total Interest
 JB      10000       0.5        50
 Jefh    50000       1.25       625
 John    20000       0.25       50

我正在使用以下命令来实现

awk -F, '$8 > 0 {print $1,",",$2,",",$3,",",$2*$3}

但我得到的输出如下,因为它也是第一行的乘法

Name    Amount     Interest     0
 JB      10000       0.5        50
 Jefh    50000       1.25       625
 John    20000       0.25       50

如何添加列名而不是0

2 个答案:

答案 0 :(得分:1)

首先是awk-command add:

NR==1 {print $0,"Total_Interest"; next}

这将仅适用于第一行输入,打印字符串,并跳转到下一行/记录

因此,整个调用看起来应该是这样的:

awk -F, 'NR==1 {print $0,"Total_Interest"; next}
         $8 > 0 {print $1,",",$2,",",$3,",",$2*$3}' input

答案 1 :(得分:1)

我会这样做:

awk -v OFS="\t" '{$(NF+1) = (NR==1 ? "Total Interest" : $2 * $3)} 1'

为每一行添加一个字段,然后只打印该行。