bash - 更改 CSV 文件中的列值

标签 bash csv awk

在 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"

最佳答案

您可以在 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"

关于bash - 更改 CSV 文件中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517459/

相关文章:

python - 无法在 Windows/MSYS2 下从 bash 脚本运行 MATLAB

xml - 如何搜索xml文件,条件是文件名在文件内

bash - 使用 T 恤 : can anyone explain? 的怪异

linux - 如何使用awk读取每n个字符而不是每行的文件?

linux - 如果输出为十进制,则为整数

bash - 带换行符的 Grep 搜索字符串

python - 如何在提取列时保留 pandas 索引

Python CSV 读->写;删除并替换 PLUS : end of line is JSON format

ios - 以编程方式将 Sqlite 表数据导出到 csv 文件 - xcode iOS 5(适用于 ipad 应用程序)

linux - 空行下的第一列副本