linux - 如何使用 sed 将文本替换为文件路径?
问题描述
我正在编写一个 bash 脚本,我需要用特定文件路径替换文件中的文本,但我的理解是这sed
不适用于特定字符,例如/
. 我想知道是否有办法解决这个问题?
这是我目前的脚本:
currentdir="$PWD"
filepathvar="${currentdir}/settings.ini"
sed -i -e "s/filepath/$filepathvar/g" aimparmstest
当我打印出所有内容时,filepathvar
一切都如我所愿,但似乎filepathvar
包含特殊字符的事实,它给了我以下错误:
sed: -e expression #1, char 13: unknown option to `s'
有没有办法解决?或者也许我可以使用另一个命令?我在更改参数方面没有取得任何成功。任何帮助是极大的赞赏。
解决方案
您可以使用任何字符作为分隔符(第一个字符)。例如:
echo "a/b/c" | sed -e 's|/|_|g'
在你的情况下:
sed -i -e "s|filepath|$filepathvar|g" aimparmstest
推荐阅读
- javascript - 如何用数组对象映射数组
- xamarin.ios - Xamarin IOS - UserInfo 自定义数据字典始终为空
- c# - 有没有办法让 C# Batch 使用 OIDC 使用 webService?
- spring - 为不同的api组springboot添加多重认证机制
- ios - 使用变异函数/映射的结构中的全局变量在更新时不会改变值
- java - CriteriaBuilder 调用一个选择函数
- javascript - 如何限制粘贴在 contenteditable 区域中的文本样式?
- kubernetes - 无法在 gcloud 上正确配置入口
- javascript - Serviceworker event.respondWith 网络错误
- python - Python将日期时间转换为日期