sed替换带变量的文件
我们有一个文件 jimo:
1 | $ cat jimo |
注意:以下替换不使用 - i 参数真的替换文件内容,仅仅展示替换后的结果
sed 普通替换
我们替换一个文件中的某个字符串, 比如替换 jimo 里的 wiki 为 haha:
1 | $ sed 's/wiki/haha/g' jimo |
但是当我们用变量时如何替换呢?
带有变量的替换
声明一个变量 v1
1 | $ v1=lily |
接着我们替换,这时候需要使用双引号,才能解析变量
1 | $ sed "s/wiki/$v1/g" jimo |
一切看起来很美好,不过现在我们有一个变量 2:
1 | $ v2=/tmp/txt |
再次替换时发现报错了
1 | $ sed "s/wiki/$v2/g" jimo |
为什么呢?
其实很简单,带入变量,sed 命令变成了 sed "s/wiki/tmp/txt/g" jimo
, 这个命令是不合法的。
那么解决方案是什么?
自定义分隔符:
1 | $ sed "s|wiki|$v2|g" jimo |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Real的博客!
评论
TwikooWaline