使用sed逃脱单引号和双引号。 geed,find,xargs

时间:2013-03-08 21:08:53

标签: regex replace sed escaping

我有一个类似这样的命令:

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing

我想让这个命令起作用。不幸的是,单引号和双引号打破了命令。如何逃避此字符串并使此命令起作用?

这个问题与此one不一样,因为我在 [>中有一个引号。但是,如果一个更小的修改解决了问题,我想知道。

我曾尝试过几种不同的方法,使用@,#,\,但还没有成功。

3 个答案:

答案 0 :(得分:6)

看看这个:

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是否正常,只是单/双引号部分。

答案 1 :(得分:1)

您不能在单引号中使用单引号。你可以:

  1. 结束单引号,然后使用反斜杠引用:'...'\'

  2. 结束单引号,然后在双引号中使用单引号:'...'"'"

答案 2 :(得分:0)

或者您可以尝试将sed脚本放在双引号中并转义需要转义的内容

gsed -i -r "s/[$][A-Za-z_'\"]/testing/"