我如何编写一个 sed 脚本(或 awk,只是不熟悉它)来从双引号 csv 字段的内部去除逗号?我可以使用以下 sed 单行删除单个逗号:
sed 's/"\([^"]*\),\([^"]*\)"/\1\2/g' file > file2
但如果我在字段中有两个逗号,则只删除一个逗号:
"ALOHA, INC., A CONDOMINIUM ASSOCIATION"
成为
"ALOHA, INC. A CONDOMINIUM ASSOCIATION"
或者,如果有人能向我解释为什么在将 csv 加载到 mysql 时我似乎无法使用“可选地包含在‘”’选项,那将使生活变得容易得多(我已经一直在尝试使用 sed 去除逗号,因为逗号会破坏我的柱状数据,即使我使用可选的封闭选项并且我的字段被双引号引起来。Excel 仅在带逗号的字段周围使用引号导出。如果所有内容都是双引号,我不会没有问题,但是有选择地引用,我开始用鞋子敲 table 。
更新:该文件包含多个字段。
"ALOHA, INC., A CONDOMINIUM ASSOCIATION", 900, VENICE, FL, 34293-5112,,VENICE,FL,34285,ALOHA
我什至担心可能会有多个引用字段的行,这似乎是一个严重的问题。不过,据我所知,这并不常见。
我刚才想的一件事是我可以消除“, INC” 的所有实例,但这不会消除其他示例,如“, LLC”等。
我想删除字段中的所有逗号。
我担心以下情况:
"ALOHA, INC., A CONDOMINIUM ASSOCIATION", 900, VENICE, FL, 34293-5112,,VENICE,FL,34285,"ALOHA, Inc., A CONDOMINIUM ASSOCIATION"
Aloha 的第一个实例和最后一个实例之间的逗号不会用
消除吗sed 's/"\([^"]*\),\([^"]*\)"/\1\2/g' file > file2
最佳答案
如果您想删除 "
到 "
之间出现的所有逗号,那么以下内容可能会对您有所帮助。
sed '/".*"/s/,//g' Input_file
如果您想将输出保存到 Input_file 本身,请使用 sed -i
选项。
关于mysql - 从双引号的 csv 字段中去除可变数量的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50354685/