我有一个这样的字符串:
'abc','D'art','abc'
使用 sed 我可以使用D'a
以下方法替换 ' D\'a'
:
sed -i "s/D'a/D\\\'a/g" file1.sql
问题是我有一个巨大的 SQL 文件,并且每一步我都有一个新的组合(D'A,T'b,P'a......)...所以我正在寻找一种有效的方法来检测字母之间的单引号,以便我可以转义它们。
任何想法?
答案1
实际上,您可能希望从两侧转义与非逗号相邻的每个单引号。
每一步我都有一个新的组合(D'A,T'b,P'a......)
您不需要分别介绍每个组合。以下形式的反向\1
引用\2
很有用:
sed "s/\([^,]\)'\([^,]\)/\1\\\'\2/g"
# ^^^^^^^^ The 1st capture group (it matches not-a-comma)...
# ^^ ... is referenced here by \1.
# ^^^^^^^^ And the 2nd one...
# ^^ ... is referenced here by \2.