shell 使用sed插入单引号

ulydmbyx  于 2022-11-25  发布在  Shell
关注(0)|答案(3)|浏览(546)

我想在一行中添加一些文本:

sudo sed -i '5imytext 16/16' /file

现在我已经在文件的第5行添加了mytext 16/16,但实际上我想添加文本'mytext' 16/16mytext用单引号括起来)。
我试过了

sudo sed -i '5i'mytext' 16/16' /file

但没有用,谁能帮帮我

ogsagwnx

ogsagwnx1#

您试图在插入字符串中使用的单引号与sed命令前后的单引号相互干扰。
最简单的方法是在sed命令前后使用不同的引号:

"5i'mytext' 16/16"

通常,最好在sed命令两边使用单引号,但在这种情况下会更棘手:

'5i'"'"'mytext'"'"' 16/16'

基本上,你需要把单引号放在双引号里,在这种情况下,没有理由不把整个命令用双引号引起来。
正如注解中的123所建议的,另一种方法是将sed命令放入脚本文件中:

5i'mytext' 16/16

然后使用-f开关执行sed:

sed -f script

这避免了使用两种引号的需要。

6ioyuze2

6ioyuze22#

在这些情况下使用双引号。因为:
1.单引号内不能有单引号。('\''无效)
1.双引号内可以同时包含单引号和双引号。("'\""也可以)
示例:

sudo sed -i "5i'mytext' 16/16" /file
hxzsmxv2

hxzsmxv23#

您可以在sed命令前后使用双引号,但如果您还需要插入双引号,这就没有帮助了用途:\x27
例如:echo a|sed 's/a/\x27/'

相关问题