【问题标题】: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
使用单引号并使用不同于/ 的分隔符,该分隔符不会出现在搜索/替换字词中(除\ 和换行符之外的任何字符都可以用作分隔符)
\是元字符,使用\\字面表示