我有一个类似于这个的命令:
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/"