我有一个类似这样的命令:
find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing
我想让这个命令起作用。不幸的是,单引号和双引号打破了命令。如何逃避此字符串并使此命令起作用?
这个问题与此one不一样,因为我在 [>中有一个引号。但是,如果一个更小的修改解决了问题,我想知道。
我曾尝试过几种不同的方法,使用@,#,\,但还没有成功。
答案 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)
您不能在单引号中使用单引号。你可以:
结束单引号,然后使用反斜杠引用:'...'\'
结束单引号,然后在双引号中使用单引号:'...'"'"
答案 2 :(得分:0)
或者您可以尝试将sed脚本放在双引号中并转义需要转义的内容
gsed -i -r "s/[$][A-Za-z_'\"]/testing/"