2013-03-08 88 views
2

我有一个命令similiar这这一个:使用sed转义单引号和双引号。 geed,查找,xargs的

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

我想将这个命令的工作。不幸的是,单引号和双引号打破了命令。我怎样才能逃避这个字符串,并使这个命令工作?

此问题与此one相同,因为我在[。但是如果一个小改动解决了这个问题,我想知道。

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

回答

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' 

我没有检查,如果查找/ xargs的一部分OK,只是单/双引号部分。

1

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

  1. 结束的单引号,然后用一个反斜杠报价:'...'\'

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

0

或者你可以尝试把sed脚本在双引号和转义需要转义

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