blog icon indicating copy to clipboard operation
blog copied to clipboard

Bash 之 envsubst 的使用

Open penglongli opened this issue 7 years ago • 0 comments
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 替换标记

sed 使用实例

penglongli avatar Nov 27 '17 14:11 penglongli