我的谷歌foo让我失望......
我有一个文件(超过2演出),有一个SQL格式问题。所以我需要一个正则表达式来更新以下示例(记住,我不知道有多少或字母是什么):
我已经尝试过(在VIM和sed内):
s/'[A-Z]''/$1'/
但这只会产生:
'N'' -> '$1'
答案 0 :(得分:4)
sed中的反向引用是\1
,而不是$1
。您还需要使用\(\)
捕获该字母(并且可能使用全局标记g
)。
你的sed表达式应该是:
s/'\([A-Z]\)''/\1'/g
答案 1 :(得分:1)
试一试:
sed "s/\([[:alpha:]]'\)'/\1/g" file
$ sed "s/\([[:alpha:]]'\)'/\1/g" <<<"aBcD''eg''H'i"
aBcD'eg'H'i
注意:既然你说你不知道他们会是什么字母,我认为他们可能是小写的。如果您知道他们总是大写,那么请将[[:alpha:]]
更改为[[:upper:]]
。这些字符类分别优先于[A-Za-z]
和[A-Z]
,因为无论语言环境如何,它们始终可以正常工作。