gpt4 book ai didi

linux - 仅当包含在 ""之间时,如何才能替换 CSV 中的逗号字符

转载 作者:可可西里 更新时间:2023-11-01 11:48:41 26 4
gpt4 key购买 nike

我有一个包含单词和数量的 csv 文件。当金额大于 999 时,数字被包含在 ""中,以便将用作千位分隔符的逗号字符与用作字段分隔符的逗号区分开来,如下所示:

black, "1,340.00", brown, white, 150.00, blue
apple, 10.00, bread, coffee, "1,850.00", juice
cat, dog, 995.00, tiger, "2,450.00"

我希望只删除包含在“”之间的逗号,保留另一个逗号(字段分隔符),并删除“”。新 csv 的输出应该是这样的:

black, 1340.00, brown, white, 150.00, blue 
apple, 10.00, bread, coffee, 1850.00, juice
cat, dog, 995.00, tiger, 2450.00

我尝试过 sed 和 awk,但不确定实现它的最佳方法。谢谢!

最佳答案

$ awk -F\" '{for (i=2; i<=NF; i+=2) gsub(/,/,"",$i)} 1' OFS="" input.csv
black, 1340.00, brown, white, 150.00, blue
apple, 10.00, bread, coffee, 1850.00, juice
cat, dog, 995.00, tiger, 2450.00

工作原理

  • -F\"

    这告诉 awk 使用双引号作为字段分隔符。

  • for (i=2; i<=NF; i=i+2) gsub(/,/,"",$i)

    每个偶数字段都是双引号中的字段。对于那些偶数字段,我们删除了逗号。

    之所以有效,是因为我们选择了 "作为字段分隔符。

  • 1

    这是 awk 的 print-the-line 的神秘简写。

  • OFS=""

    这告诉 awk 使用空字符串作为输出的字段分隔符。这具有删除引号的效果。

关于linux - 仅当包含在 ""之间时,如何才能替换 CSV 中的逗号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38779167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com