awk:向 csv 添加两列,它们是常数与最后一列的乘积

awk:向 csv 添加两列,它们是常数与最后一列的乘积

我正在尝试向 csv 文件添加两个新列,其中包含最后一列与常量的乘法。最后一列由英镑符号和后跟的数字组成。

输入:

id,tester,company,chief,previous_test,test,date,result,cost
6582983b-61d4-4371-912d-bbc76bb8208b,Audrey Feest,Pagac-Gorczany,Claudine Moakson,18/02/2019,Passwords,20/05/2020,none,£11897.96

预期输出:

id,tester,company,chief,previous_test,test,date,result,cost,euro,dollar
6582983b-61d4-4371-912d-bbc76bb8208b,Audrey Feest,Pagac-Gorczany,Claudine Moakson,18/02/2019,Passwords,20/05/2020,none,¬£11897.96,13682.65€,$16538.16

到目前为止,我所做的是获取此列的一个子字符串,并用它创建另外两个子字符串,但我得到的只是最后一列的两个副本,不带井号:

awk -F, -v OFS="," 'NR==1 { print $0,"euro,dollar"; next }
{ w = substr($9, 2);
  u = substr($9, 2);
  print $0, w, u }' file.csv

我现在要做的就是将这两列分别乘以一个常数(分别为 1.15 和 1.39),并将符号添加到每列(€ 和 $),但我在使用print最后的命令时遇到了困难。

答案1

awk 'BEGIN{ FS=OFS=","; CONVFMT="%.2f" }
          { $(NF+1)=(NR>1?    substr($9,3)*1.15"€":"euro")
            $(NF+1)=(NR>1? "$"substr($9,3)*1.39   :"dollar")
}1' infile

有什么用CONVFMT

相关内容