【问题标题】:bash arithmetic operation in csv filecsv文件中的bash算术运算
【发布时间】:2015-10-15 01:16:57
【问题描述】:

我有一些 csv 文件,我需要在第 4 列和第 5 列中求和 12%:

原始文件:

Destination,First Interval,Next Interval,First Price,Next Price
93,180,180,4.32210,4.32210,ADD=#60:50&0|SEQ=intNxN@priceN&#12.97&#30%
9370,180,180,4.50000,4.50000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%
9371,180,180,4.50000,4.50000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%
9372,180,180,4.50000,4.50000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%

想要的输出:

Destination,First Interval,Next Interval,First Price,Next Price,Formula
93,180,180,4.84075,4.84075,ADD=#60:50&0|SEQ=intNxN@priceN&#12.97&#30%
9370,180,180,5.04000,5.04000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%
9371,180,180,5.04000,5.04000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%
9372,180,180,5.04000,5.04000,ADD=#60:50&0|SEQ=intNxN@priceN&#13.50&#30%

通过 awk 或 sed 执行此操作的任何建议

【问题讨论】:

  • 搜索最好的方法,+200个文件需要更改,在电子表格处理器中不容易做到。

标签: bash csv awk sed


【解决方案1】:

你可以试试下面的 awk 命令,

awk -F',' -v OFS="," '{$4=$4+((12/100)*$4);$5=$5+((12/100)*$5);}1' file

DEMO

【讨论】:

    【解决方案2】:

    这可能是使用sedawk 的另一种选择

    sed 's/,/\t/g' file | awk '{print $4+((12/100)*$4), "\t", $5+((12/100)*$5)}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-02
      • 2019-04-30
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多