mysql - 从双引号的 csv 字段中去除可变数量的逗号

标签 mysql regex csv sed

我如何编写一个 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/

相关文章:

mysql - 从两个表中检索数据时如何填充文本框?

php - 两个表连接两个结果

java - 正则表达式仅在字符串之后匹配重复模式

sql - 来自另一个表的动态正则表达式搜索字符串

Powershell - 不允许使用空管道元素

python - 如何 checkout 多个提交并将代码版本复制到另一个目录?

java - 这是我的代码。当我执行它时,一个空字符串被插入到数据库中。但是,我对数据库中的所有字段使用 varchar 20

php - 在 sql 中使用 Order By 和三个 UNION

javascript - 名字和姓氏正则表达式

c# - 从 csv 读取到对象 [] C#