用sed for mongoimport替换csv文件中的逗号

时间:2016-07-26 15:19:16

标签: bash csv sed mongoimport

我有一个csv文件,我需要用点替换所有逗号。换句话说,我只需要分号作为分隔符,逗号需要用点替换。 我需要这个以便用mongoimport导入数据。 我使用了sed命令,但它并没有取代每个逗号的并发。例如:

Zolmitriptan;6 UNITA' 2,5 MG - USO ORALE;N02CC03;33345149;ZOMIG RAPIMELT;"""2,5 MG COMPRESSE ORODISPERSIBILI"" 6 COMPRESSE IN BLISTER";ASTRAZENECA S.P.A.;17,84;20,84;;3,00;FUB

使用sed 's/\,/\./' <filename>

成为此内容
Zolmitriptan;6 UNITA' 2.5 MG - USO ORALE;N02CC03;33345149;ZOMIG RAPIMELT;"""2,5 MG COMPRESSE ORODISPERSIBILI"" 6 COMPRESSE IN BLISTER";ASTRAZENECA S.P.A.;17,84;20,84;;3,00;FUB

请注意,只替换了第一个逗号。我做错了什么?

PS。有没有办法让mongoimport忽略逗号? (在这种情况下,我不需要更换)

2 个答案:

答案 0 :(得分:2)

这是一个&#34; sed&#34;有效的命令行。 它需要一个文件作为输入并替换任何数字(0-9)后带点。

sed -i 's/\([0-9]\),/\1./g' your_file.csv

评论:

  • -i代表&#34; inplace&#34; :文件被自己处理。小心,没有备份!
  • sed -i&#39; s / blabla / foofoo / g&#39;将用foofoo取代任何出现的blabla。最后一个g选项意味着如果多次发现blabla,则在每一行中替换多次。
  • [0-9]表示从0到9的任何数字。
  • ([0-9])括号用于存储逗号前的数字。括号必须被转义。
  • \ 1用于调用存储的内容,并在点之前将其返回到结果中。它也必须逃脱。

实施例

之前

your_file.csv

stuff 12,004 hello -78,1
anything456,78 what else 98765

运行以下行

sed -i 's/\([0-9]\),/\1./g' your_file.csv

之后

your_file.csv

stuff 12.004 hello -78.1
anything456.78 what else 98765

答案 1 :(得分:0)

我没有使用全局选项,所以

sed 's/\,/\./g'

现在正在运作。 不过,对于mongoimport替代方案仍然存在问题!