【问题标题】:Replace windows path with linux path using sed in a file在文件中使用 sed 将 windows 路径替换为 linux 路径
【发布时间】:2017-12-17 22:20:08
【问题描述】:

我有一个配置文件,我需要使用脚本自动更改..

  • 原始路径:G:\xampp\www\myweb
  • 新路径:/srv/myweb/public_html

我尝试使用所有可能的选项

sed -i \"s/G:\\xampp\\www\\myweb/\/srv\/myweb\/public_html/g\" myfile.php

但我无法完成这项工作,有什么帮助吗???

解决方案必须使用 bash,因为它在一个巨大的脚本中运行.. 感谢您的任何建议

【问题讨论】:

    标签: bash ubuntu sed replace path


    【解决方案1】:

    尝试取消转义命令周围的引号并转义\,如下所示:

    sed -i "s/G:\\\xampp\\\www\\\myweb/\/srv\/myweb\/public_html/g" file
    

    【讨论】:

      【解决方案2】:

      这样就可以了:

      sed 's|G:\\xampp\\www\\myweb|/srv/myweb/public_html|g' -i myfile.php
      

      我们在sed 搜索命令中使用| 作为分隔符(而不是默认的/)以避免/ 的转义,并在所有内容周围加上单引号以避免\ 的双重转义。

      【讨论】:

        【解决方案3】:
        $ echo 'foo G:\xampp\www\myweb bar' | sed 's#G:\\xampp\\www\\myweb#/srv/myweb/public_html#g'
        foo /srv/myweb/public_html bar
        

        使用单引号并使用不同于/ 的分隔符,该分隔符不会出现在搜索/替换字词中(除\ 和换行符之外的任何字符都可以用作分隔符)

        \是元字符,使用\\字面表示

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-11
          • 1970-01-01
          • 2011-01-24
          • 1970-01-01
          • 2018-04-23
          • 1970-01-01
          • 2018-01-02
          相关资源
          最近更新 更多