2016-12-26 97 views
0

我正在使用bash脚本为AdWords创建报告(AdWords文件位于python中)。我生成了一个“CAMPAIGN_PERFORMANCE_REPORT”(作为CSV文件),我采取的措施之一是“转化”。 。 我的问题是这样的 - 当我有更多然后千次转换,数与“在每一侧和逗号 示例:从Bash脚本中的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分割并我得到“1”的转换,而非1535(例如)

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

  1. 有谁知道我怎样才能把“转换”字段尽可能长,而不是AdWords API的双倍数量?
  2. 如果不是,我该如何在Linux中的同一文件夹中的几个文件中替换括号(“)和逗号(,)?由于每个AdWords帐户都有一个csv文件...

谢谢!

+2

粘贴您的样本数据的预期输出。 – Inian

+0

也许你可能会考虑改变你用来将数据加载到mysql而不是改变文件的方法。 – symcbean

回答

1

这太长了评论。

如果你正在加载数据到MySQL,那么你应该使用load data infile

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

您可以查看文档here

+0

非常感谢,但它不起作用...我的SQL字段是INT,并且当我添加“ENCLOSED BY'”'“时,SQL将该字段视为字符串(1,535),并将值这个表是1 ... – Bramat

+1

@Bramat ...我将它作为一个字符串导入,然后在SQL中进行操作,也可以在'load data infile'中使用变量和转换 –

+0

tmp表修复了我所有的问题... 非常感谢 :) – Bramat

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标签” - 构造)
  2. 删除数字周围的引号([0-9.]+)($