用sed插入单引号

时间:2016-01-28 13:50:44

标签: bash shell sed

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

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

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

我试过

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

但它不起作用。有人能帮助我吗?

2 个答案:

答案 0 :(得分:4)

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

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

"5i'mytext' 16/16"

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

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

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

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

5i'mytext' 16/16

然后使用-f开关sed:

sed -f script

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

答案 1 :(得分:0)

在这些情况下使用双引号。这是因为:

  1. 单引号内不能有单引号。 ('\''无法工作)
  2. 双重报价可以同时包含单引号和双引号。 ("'\""将有效)
  3. 示例:

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