以下是按预期工作.我想用''替换"我"这个词
 echo "test ' this" | sed 's/'"'"'/me/g'
test me this
Run Code Online (Sandbox Code Playgroud)
预期结果:
test \' this
Run Code Online (Sandbox Code Playgroud)
是否有可能在同一个命令中转义双引号?
pax*_*blo 47
您的问题有点令人困惑,因为me原始字符串中没有要替换的.但是,我想我拥有它.让我解释一下:
我有一个
sed命令可以成功地用'单词替换单引号me.我想要一个类似的,可以用字符序列替换它\'.
如果是这种情况(你只想逃避单引号),你可以使用:
pax$ echo "test ' this" | sed "s/'/\\\'/g"
test \' this
Run Code Online (Sandbox Code Playgroud)
通过在sed命令周围使用双引号,您无需担心嵌入的单引号.然后你必须担心转义,因为shell会吸收一级转义,因此sed会看到:
s/'/\'/g
Run Code Online (Sandbox Code Playgroud)
将根据需要转换'成\'.
如果你想要一种单一和双引号转义的方法,sed最简单的方法是提供多个命令,sed这样你就可以使用备用引号:
pax$ echo "Single '" 'and double "'
Single ' and double "
pax$ echo "Single '" 'and double "' | sed -e "s/'/\\\'/g" -e 's/"/\\"/g'
Single \' and double \"
Run Code Online (Sandbox Code Playgroud)
如果我误解了您的要求,可以举几个例子.
ack*_*ser 12
我对你的问题有些怀疑,但无论如何,我的解决方案对任何人都有用.
我们先告诉我们:
这意味着一个\,因为当你把两个放在一起时,你正在取消其作为元字符的含义.并且\ x27作为单引号,至少对我而言比单个双引号更容易...
最后我说
echo "test me this" | sed 's/me/\\\x27/g'
Run Code Online (Sandbox Code Playgroud)
所以在这里你测试我==>测试这个
   echo "test \' this" | sed 's/\\\x27/me/g'
Run Code Online (Sandbox Code Playgroud)
这是相反的.
你是这个意思吗?:
# cat <<! | sed 's/["'"'"']/\\&/g'
> quote '
> double quotes "
> quote ' double quotes "
> !
quote \'
double quotes \"
quote \' double quotes \"
Run Code Online (Sandbox Code Playgroud)
或这个:
# echo "test me test"|sed 's/me/\\'"'"'/g'
test \' test
# echo "test me test"|sed 's/me/\\"/g'
test \" test
Run Code Online (Sandbox Code Playgroud)
我总是最好在命令行上单引号sed/awk/perl ...命令,并为其中使用的双引号参数制作"漏洞".