如何使用shell命令去除CSV文件指定列负号并转换为正数
操作方案
你可以直接用awk命令实现需求,针对你给出的示例CSV(需要处理的是第4列),具体操作如下:
GNU Awk(Linux默认环境)原地修改命令
awk -i inplace 'BEGIN{FS=OFS=","} {gsub(/-/,"",$4); print}' 你的文件路径.csv
非GNU Awk(macOS等环境)通用命令
awk 'BEGIN{FS=OFS=","} {gsub(/-/,"",$4); print}' 你的文件路径.csv > temp.csv && mv temp.csv 你的文件路径.csv
命令说明
FS=OFS=",":指定输入、输出的字段分隔符为逗号,适配CSV格式gsub(/-/,"",$4):替换第4列中的所有负号为空,自动将负数转为正数,空值本身无负号不会被改动- 如果你需要处理的不是第4列,把
$4替换为对应列号即可(列号从1开始计数)
处理后效果
对应你的示例输入,处理后文件内容如下:
sample1,COST,USD,67,2021-09-20T07 sample2,COST,USD,97,2021-09-20T07 sample3,COST,USD,7,2021-09-20T07 sample4,COST,USD, ,2021-09-20T07 sample5,COST,USD, ,2021-09-20T07 sample6,COST,USD,9,2021-09-20T07
内容的提问来源于stack exchange,提问作者ajit singh
相关产品推荐
相关产品推荐

