bash - 用动态bash脚本变量替换所有文件中包含冒号、斜杠和撇号的字符串?
问题描述
如何使用动态 bash 脚本变量替换具有给定模式的所有文件中包含冒号、斜杠和撇号的字符串?
我有几个带有类似字符串的 css 文件,src:url('/resource/
我想用 $namespace bash 脚本变量的文字值来更改这些src:url('/resource/NS__
字符串NS
。
我尝试执行以下命令
find force-app -type f -name "*.css" -exec sed -i "s/src\:url('\/resource\/:/src\:url('\/resource\/$namespace__/g" {} \;
和这个
find force-app -type f -name "*.css" -exec sed -i "" "s/src\:url('\/resource\/:/src\:url('\/resource\/$namespace__/g" {} \;
对于第一个命令,我收到了错误
sed: 1: "force-app/main/default/ ...": invalid command code f
对于第二个命令,我没有收到任何错误,但没有进行任何更改
我的本地环境是 MacOs,但我的 CI 目标在 ubuntu 上运行,所以我需要 Mac 和 Ubuntu 的两个版本工作
解决方案
看来我明白了。
我需要转义单引号,但我不需要转义冒号或斜杠,所以这个命令确实有效
find force-app -type f -name "*.css" -exec sed -i "" "s|src:url(\'/resource/|src:url(\'/resource/${namespace}__|g" {} \;
这个应该在ubuntu上工作
find force-app -type f -name "*.css" -exec sed -i "s|src:url(\'/resource/|src:url(\'/resource/${namespace}__|g" {} \;
推荐阅读
- xml - 如何使用 powershell 在 XML 中打印尖括号
- python - 将每一行写入具有 csv 扩展名的文件
- python - 试图了解在 Sublime Text 中导入模块(BioPython)是如何工作的
- r - 我的数据框不会通过嵌套的 for 循环来维护其内容,该循环会附加新行
- php - 可选设置器
- javascript - Javascript Date.UTC() 与 moment.utc()
- c# - 我应该使用 Azure Active Directory 还是 Windows Active Directory 或其他进行身份验证?
- webpack - 控制 Webpack 3 捆绑/分块(在 Ionic3 中)
- python - 如何在 python 中分析 fna.gz?
- amazon-web-services - 以编程方式检查信任关系