使用 sed 替换两个字符之间的单引号

使用 sed 替换两个字符之间的单引号

我有一个这样的字符串:

'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.

相关内容