如何使用awk创建带列名的列

3
我有一个类似下面的csv文件:
 Name    Amount     Interest
 JB      10000       0.5
 Jefh    50000       1.25
 John    20000       0.25

我想使用awk添加一列,如下所示:
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个回答

1
我会这样做:

我会这样做:

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

这将为每行添加一个字段,然后简单地打印该行。


1
作为第一个awk命令添加:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接