「Shell」- File | 文件操作

场景 | 文件内容排序

sort

反向排序:rev | sort | rev
sorting – bash sort from the end of string – Super User

场景 | 逐行处理文件内容

linux – Looping through the content of a file in Bash – Stack Overflow

cat peptides.txt | while read line
do
   # do something with $line here
done

场景 | 文件模板化 | Template

linux – How to substitute shell variables in complex text files – Stack Overflow

使用环境变量,替换在文件中的变量

在部署服务时,脚本的部分内容是是动态生成的。我们可以使用 sed 进行替换,但是我们发现了更好的方法。

通过使用 envsubst 命令,可以替换在文件中的变量引用(类似于其他编程的模板引擎)。

该笔记将记录:如何使用 envsubst 替换文件中的变量,来动态生成文件内容的方法。

解决方案

对于如下文件模板:

# cat example.txt.template
了撒谎法拉速度飞书了士大夫了士大夫撒地方 sadfasfdsa
Replace ${FOO} ${BAR} with values.
safdasfdadsfasfdafdasfdasdfasdfasfdadsfafdsaf

以及如下环境变量:

export FOO=abcd
export BAR=1234

执行如下 Shell 命令:

envsubst < "example.txt.template" > "example.txt"

将输出如下文件及内容:

# example.txt.template
了撒谎法拉速度飞书了士大夫了士大夫撒地方 sadfasfdsa
Replace abcd 1234 with values.
safdasfdadsfasfdafdasfdasdfasdfasfdadsfafdsaf

附加说明

命令 envsubst 属于 gettext 软件包。在 Debian 中,通过如下命令安装:apt-get install gettext-base