blog
blog copied to clipboard
Bash 之 envsubst 的使用
trafficstars
sed 是一个流编辑器,sed 操作的对象是文件的一个 Copy 副本,然后通过数据流重定向到新文件。如果改动没有重定向到一个目标,则会输出到屏幕。
sed 如果要修改文件,可以使用 -i 参数
envsubst 用于替换环境变量的值,在一些地方很有用处。
envsubst 使用
envsubst 归属于 gettext-base 包,在使用之前我们需要安装:
root@jdu4e00u53f7:~# apt-get install gettext-base
使用 export 命令增加一条环境变量,并建立一个文件:
root@jdu4e00u53f7:~# export TEST="a string to test envsubst"
root@jdu4e00u53f7:~# cat test.txt
$TEST
然后使用如下命令,替换 test.txt 文件中的环境变量:
root@jdu4e00u53f7:~# envsubst < test.txt > bak.txt
root@jdu4e00u53f7:~# cat bak.txt
a string to test envsubst
可以发现已经替换了。
但是,我们是将流重定向到了新文件中。如果我们想要把流重定向会原文件怎么办?
借助 moreutils 包中的 sponge 可以实现上述目标:
root@jdu4e00u53f7:~# envsubst < test.txt | sponge test.txt
root@jdu4e00u53f7:~# cat test
a string to test envsubst
sed 使用
参考文章:http://www.grymoire.com/Unix/Sed.html
sed 命令非常强大,主要用到的一些功能如下:
- 使用 s 做字符串替换
- 定界符
- 使用 & 做为已匹配字符串
- 使用 \1 做子串匹配
- sed 替换标记
-