我有一个包含许多 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
然而,这会删除O
和B
所以我最终得到:
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] 删除。
我来说两句