【问题标题】:Changing column value in CSV file更改 CSV 文件中的列值
【发布时间】:2016-02-04 16:30:49
【问题描述】:

在 csv 文件中,我有下面的列,我尝试使用
awk -F ',' -v OFS=',' '$1 { $2=$2*2; print}' path/file.csv > output.csv 更改第二列的值。
但它返回零并删除双引号。

文件.csv

"sku","0.47","supplierName"
"sku","3.14","supplierName"
"sku","3.56","supplierName"
"sku","4.20","supplierName"

输出.csv

"sku",0,"supplierName"
"sku",0,"supplierName"
"sku",0,"supplierName"
"sku",0,"supplierName"

【问题讨论】:

    标签: bash csv awk


    【解决方案1】:

    您可以在 FS 值中指定多个字符。

    $ awk -v FS="\",\"" -v OFS="\",\"" '{$2=$2*2}1' file
    "sku","0.94","supplierName"
    "sku","6.28","supplierName"
    "sku","7.12","supplierName"
    "sku","8.4","supplierName"
    

    如果你想四舍五入到小数点后两位,试试这个。

    $ awk -v FS="\",\"" -v OFS="\",\"" '{$2=sprintf("%.2f",$2*2)}1' file
    "sku","0.94","supplierName"
    "sku","6.28","supplierName"
    "sku","7.12","supplierName"
    "sku","8.40","supplierName"
    

    【讨论】:

    • 非常感谢。您可能知道如何对结果进行四舍五入吗?
    • 你太棒了...我没有足够的分数来投票:(
    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2023-03-28
    • 2018-03-28
    相关资源
    最近更新 更多