用sed插入单引号

lvt*_*llo 5 bash shell sed

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

sudo sed -i '5imytext 16/16' /file
Run Code Online (Sandbox Code Playgroud)

现在,我mytext 16/16在文件的第5行添加了内容,但实际上我想添加文本'mytext' 16/16mytext在单引号之间)。

我试过了

sudo sed -i '5i'mytext' 16/16' /file
Run Code Online (Sandbox Code Playgroud)

但这没用。有人能帮我吗?

Tom*_*ech 5

您试图在插入字符串中使用的单引号会干扰sed命令周围的单引号。

最简单的方法是在sed命令周围使用不同的引号:

"5i'mytext' 16/16"
Run Code Online (Sandbox Code Playgroud)

通常,最好在sed命令周围使用单引号,但在这种情况下会比较棘手:

'5i'"'"'mytext'"'"' 16/16'
Run Code Online (Sandbox Code Playgroud)

基本上,您需要以某种方式将单引号放在双引号中,在这种情况下,没有理由不对整个命令加上双引号。

正如123在注释中所建议的那样,另一种方法是将sed命令放入脚本文件中:

5i'mytext' 16/16
Run Code Online (Sandbox Code Playgroud)

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

sed -f script
Run Code Online (Sandbox Code Playgroud)

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