在Bash脚本中从CSV文件中删除括号

时间:2016-12-26 14:55:32

标签: mysql linux bash csv google-adwords

我使用bash脚本为AdWords创建报告(AdWords文件采用python格式)。我正在制作一个" CAMPAIGN_PERFORMANCE_REPORT" (作为CSV文件),我采取的措施之一是"转换"。 我的问题是 - 当我有超过一千次转换时,数字是"在每一边和逗号。 例如:

2016-12-25,Campaign_A,Universal App Campaign,264.0
2016-12-25,Campaign_B,Universal App Campaign,"1,535.0"
2016-12-25,Campaign_C,Universal App Campaign,"1,472.0"
2016-12-25,Campaign_D,Universal App Campaign,"1,378.0"
2016-12-25,Campaign_E,Universal App Campaign,382.0
2016-12-25,Campaign_F,Universal App Campaign,431.0

当我将这些数据插入MySQL时,单元格被分为2,我得到了#34; 1"在转换而不是1535(例如)。

所以我在这两个问题中需要你的帮助:

  1. 有谁知道如何进行"转换" AdWords中的字段为长而不是双倍?
  2. 如果不是,如何在linux中的同一文件夹中的几个文件中替换括号(")和逗号(,)?由于每个AdWords帐户都有一个csv文件...
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

评论太长了。

如果要将数据加载到MySQL中,那么您应该使用load data infile

此命令有一个选项:fields optionally enclosed by,您可以在其中指定双引号字符。这将把分隔符作为值的一部分而不是值分隔符之间的逗号处理。

您可以查看文档here

答案 1 :(得分:0)

您可以通过这样的sed过滤器运行该文件:

sed -r ':l s/"([0-9]+),/"\1/g; t l; s/"([0-9.]+)"$/\1/g' yourfile > convertedfile

它使用两步法删除逗号和引号:

  1. 只要有引号后跟一个数字([0-9.]+)后跟,,就会删除逗号::l s/"([0-9]+),/"\1/g; t l;(这是"标签;删除逗号;如果有什么东西被删除了goto label" - construct)
  2. 在一行([0-9.]+
  3. 的末尾删除数字($)周围的引号