为了账号安全,请及时绑定邮箱和手机立即绑定

如何在sed中转义单引号?

如何在sed中转义单引号?

SMILET 2019-11-18 14:07:25
如何在已被引号包围的sed表达式中转义单个引号?例如:sed 's/ones/one's/' <<< 'ones thing'
查看完整描述

3 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

sed带双引号的报价代码:


    $ sed "s/ones/one's/"<<<"ones thing"   

    one's thing

我不喜欢用数百个反斜杠来转义代码,这很伤我的眼睛。通常我是这样做的:


    $ sed 's/ones/one\x27s/'<<<"ones thing"

    one's thing


查看完整回答
反对 回复 2019-11-18
?
皈依舞

TA贡献1851条经验 获得超3个赞

一种技巧是使用相邻字符串的外壳程序字符串连接,并使用外壳程序转义对嵌入式引号进行转义:


sed 's/ones/two'\''s/' <<< 'ones thing'


two's thing

sed表达式中有3个字符串,然后外壳将它们缝合在一起:


sed 's/ones/two'


\'


's/'


希望对别人有帮助!


查看完整回答
反对 回复 2019-11-18
?
慕斯709654

TA贡献1840条经验 获得超5个赞

只需在sed命令的外部使用双引号即可。


$ sed "s/ones/one's/" <<< 'ones thing'

one's thing

它也适用于文件。


$ echo 'ones thing' > testfile

$ sed -i "s/ones/one's/" testfile

$ cat testfile

one's thing

如果字符串中有单引号和双引号,也可以。只是转义双引号。


例如,此文件包含带单引号和双引号的字符串。我将使用sed添加单引号并删除一些双引号。


$ cat testfile

"it's more than ones thing"

$ sed -i "s/\"it's more than ones thing\"/it's more than one's thing/" testfile 

$ cat testfile 

it's more than one's thing


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 2487 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信