将 csv 文件中的逗号替换为用于 mongoimport 的 sed
Replacing commas in a csv file with sed for 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 忽略逗号? (在这种情况下我不需要更换)
我没有使用全局选项,所以
sed 's/\,/\./g'
正在工作。
不过,对于 mongoimport 替代方案,问题仍然悬而未决!
这是一个有效的 "sed" 命令行。
它以一个文件作为输入,并将数字 (0-9) 后面的任何 替换为点 .
sed -i 's/\([0-9]\),/./g' your_file.csv
评论:
- -i 代表 "inplace" :文件本身被处理。小心,没有备份!
- sed -i 's/blabla/foofoo/g' 会将出现的任何 blabla 替换为 foofoo。最后一个 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]\),/./g' your_file.csv
your_file.csv 在
之后
stuff 12.004 hello -78.1
anything456.78 what else 98765
我有一个 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 忽略逗号? (在这种情况下我不需要更换)
我没有使用全局选项,所以
sed 's/\,/\./g'
正在工作。 不过,对于 mongoimport 替代方案,问题仍然悬而未决!
这是一个有效的 "sed" 命令行。 它以一个文件作为输入,并将数字 (0-9) 后面的任何 替换为点 .
sed -i 's/\([0-9]\),/./g' your_file.csv
评论:
- -i 代表 "inplace" :文件本身被处理。小心,没有备份!
- sed -i 's/blabla/foofoo/g' 会将出现的任何 blabla 替换为 foofoo。最后一个 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]\),/./g' your_file.csv
your_file.csv 在
之后stuff 12.004 hello -78.1
anything456.78 what else 98765