【问题标题】:replace/substitute pattern with file content用文件内容替换/替换模式
【发布时间】:2012-01-25 01:30:07
【问题描述】:
sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html
sed -i "/xxxxxxxxxxxx/d" git.html

首先我在找到xxxxxxxxxxxx时插入inc-sausage的内容

其次我删除xxxxxxxxxxxx

这两个命令都完全符合我的要求。但是如何将两个 sed 命令合并为一个? 我试过了

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html

【问题讨论】:

    标签: sed


    【解决方案1】:

    对于初学者,您可以将两个 sed 命令连接到一行中并避免重复搜索字符串,如下所示:

    sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html
    

    此外,如果您只想删除 xxxxxxxxxxxx 而不是其行中的其他内容,您可以这样做:

    sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html
    

    【讨论】:

      【解决方案2】:

      这可能对你有用:

      sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html
      

      解释:

      请参阅here 为什么需要$'\n'。另请注意,d 命令必须在最后,因为它会删除模式空间,然后立即开始下一个循环。

      或者对于 GNU sed:

      sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-25
        • 1970-01-01
        相关资源
        最近更新 更多