3

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

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

我想让这个命令起作用。不幸的是,单引号和双引号会破坏命令。我怎样才能转义这个字符串并使这个命令起作用?

这个问题与这个问题不同,因为我在[中有一个单引号。但是,如果稍微修改一下就可以解决问题,我想知道。

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

4

3 回答 3

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

于 2013-03-08T21:21:00.007 回答
1

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

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

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

于 2013-03-08T21:18:16.333 回答
0

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

gsed -i -r "s/[$][A-Za-z_'\"]/testing/" 
于 2013-03-09T13:01:08.593 回答