如何在sed中逃避单引号?

如何在已经被引号包围的sedexpression式中转义单引号?

例如:

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

用双引号引用sed代码:

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

我不喜欢用数以百计的反斜杠代码逃跑 – 伤害了我的眼睛。 通常我这样做:

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

一个技巧是使用相邻string的shellstring连接并使用shell转义来转义embedded的引号:

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

 two's thing 

sedexpression式中有3个string,然后shell将它们拼接在一起:

sed 's/ones/two'

\'

's/'

希望能帮助别人!

最好的方法是使用$'some string with \' quotes \''

例如:

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