我正在使用 mysql 客户端将表的记录导出到 CSV 文件中。一切正常,除非记录有空字段。
mysql --execute="SELECT * FROM users"| sed 's/\t/","/g;s/^/"/;s/$/"/;' > users.csv
生产
"John","Smith","john@smith.com","NULL","NULL","347-1234566"
我怎样才能产生这样的结果,其中 NULL 值被添加到文件中而没有引号
"John","Smith","john@smith.com",NULL,NULL,"347-1234566"
最佳答案
尝试:
mysql --execute="SELECT * FROM users"| sed 's/\t/","/g; s/^/"/; s/$/"/; s/"NULL"/NULL/g' > users.csv
您的命令的唯一变化是添加了 s/"NULL"/NULL/g
。
如果 sed
支持前瞻或后视正则表达式功能,则可能有更复杂的方法来执行此操作,但它没有此类功能。
例子
以这个制表符分隔的文件作为示例输入:
$ cat file
John Smith john@smith.com NULL NULL 347-1234566
您可以通过以下方式实现您想要的输出:
$ sed 's/\t/","/g; s/^/"/; s/$/"/; s/"NULL"/NULL/g' file
"John","Smith","john@smith.com",NULL,NULL,"347-1234566 "
关于mysql - 使用 sed 在字段周围添加引号,null 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779687/