【问题标题】:Insert single quote with sed用 sed 插入单引号
【发布时间】:2016-01-28 13:50:43
【问题描述】:

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

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

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

我试过了

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

但它没有用。有人可以帮我吗?

【问题讨论】:

    标签: bash shell sed


    【解决方案1】:

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

    1. 单引号内不能有单引号。 ('\'' 不起作用)
    2. 双引号里面可以有单引号和双引号。 ("'\"" 会起作用)

    例子:

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

    【讨论】:

      【解决方案2】:

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

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

      "5i'mytext' 16/16"
      

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

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

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

      根据 cmets 中 123 的建议,另一种方法是将 sed 命令放入脚本文件中:

      5i'mytext' 16/16
      

      然后使用-f 切换到sed:

      sed -f script
      

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

      【讨论】:

      • 最简单明了的方法就是把命令放到一个文件里然后运行sed -f scriptfile file
      • 是的,或者我猜你可以使用heredoc。不过,这看起来最接近 OP 必须开始的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多