Regex 使用sed转义单引号和双引号。天啊,找到了,沙格斯
我有一个类似的命令:Regex 使用sed转义单引号和双引号。天啊,找到了,沙格斯,regex,replace,sed,escaping,Regex,Replace,Sed,Escaping,我有一个类似的命令: find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing 我想让这个命令生效。不幸的是,单引号和双引号打断了命令。如何转义此字符串并使此命令生效 这个问题与这个问题不同,因为我在[中有一个单引号。但是如果稍加修改就能解决问题,我想知道 我用@、#、\,尝试了几种不同的方法,但没有成功。您不能在单引号中使用单引号。您可以: 结束单引号,然后使用反斜杠引号:“…”\“ 结束单引号,然后在双引号中使用单引号:“…
find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing
我想让这个命令生效。不幸的是,单引号和双引号打断了命令。如何转义此字符串并使此命令生效
这个问题与这个问题不同,因为我在[中有一个单引号。但是如果稍加修改就能解决问题,我想知道
我用@、#、\,尝试了几种不同的方法,但没有成功。您不能在单引号中使用单引号。您可以:
“…”\“
“…”
kent$ cat file
''''''
""""""
kent$ sed 's/\x27/single /g;s/\x22/double /g' file
single single single single single single
double double double double double double
因此,将cmd更改为:
find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\x22\x27]/testing'
注意我没有检查find/xargs部分是否正确,只是检查单引号/双引号部分。或者您可以尝试将sed脚本置于双引号中,并转义需要转义的内容
gsed -i -r "s/[$][A-Za-z_'\"]/testing/"
这对我不起作用(没有错误,但没有替换)。我在mac上。@rrr您的是bsd sed。您没有
-I
选项。请阅读就地sub.3的手册页。使用不同的引号类型来包装表达式,而不是您正在替换的表达式。(即,在双引号中使用单引号)。如果用双引号括起来:sed“s/”/bla/“
单引号”
将被替换为bla
,无需转义。(我在mac上)@rrr:双引号可能需要添加更多反斜杠,因为它们可能会开始扩展某些子字符串。