我有一个record.txt文件,如下所示:
INSERT INTO 'blogtitles' VALUES('Kelly's at house');
INSERT INTO 'blogtitles' VALUES('Nice catch!');
Run Code Online (Sandbox Code Playgroud)
当我尝试将records.txt导入db:sqlite3 my.db <records.txt由于第一行导致错误.我在records.txt文件中有很多这样的行.我需要一个sed语法,它将转义字符串中的所有这些单引号.因此导入时不会有任何问题.我真的需要这个:(谢谢!
SQL标准指定通过在行中放入两个单引号来转义字符串中的单引号.SQL就像Pascal编程语言一样.SQLite遵循此标准.例:
INSERT INTO xyz VALUES('5 O''clock');
Run Code Online (Sandbox Code Playgroud)
在一般情况下,您不能使用正则表达式执行此操作,因为它们无法计数。但如果文件看起来像这样,你可以伪造它:
sed -e "s/INSERT INTO 'blogtitles' VALUES('//" -e "s/');//" \
-e "s/'/''/g" \
-e "s/^/^INSERT INTO 'blogtitles' VALUES('/" -e "s/$/');/"
Run Code Online (Sandbox Code Playgroud)
即删除该行的静态部分,复制引号,然后再次附加静态部分。
如果你的例子太简单,我建议看看gawk(1)哪个可以做更复杂的处理(例如,在“','”处分割线,它可能位于两个值之间,而不是其他地方)。
| 归档时间: |
|
| 查看次数: |
3576 次 |
| 最近记录: |