使用 sed 替换 SQL 的正则表达式

威廉·凯夫

我有一个包含许多 SQL 语句的文件,需要使用 SED 为 SQL 语句的单引号添加转义字符。考虑以下:

INSERT INTO MYTABLE VALUES (1,'some text','Drink at O'Briens');

在上面我们需要转义O'Briens. 使用正则表达式,我可以使用[a-zA-Z ]'[a-zA-Z ].

因此,这将找到感兴趣的 3 个字符,但是如果我执行以下 sed 命令:

sed -i "s/[a-zA-Z ]'[a-zA-Z ]/''/g" file.sql

然而,这会删除OB所以我最终得到:

INSERT INTO MYTABLE VALUES (1,'some text','Drink at ''riens');

如何隔离/引用 O 和 B 使字符串变为:

INSERT INTO MYTABLE VALUES (1,'some text','Drink at O''Briens');
巴马

使用捕获组将部分输入复制到结果中。

sed -r -i "s/([a-zA-Z ])'([a-zA-Z ])/\1''\2/g" file.sql

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章