对于产品开发需要的情况下,我们通常会选择某些模板引擎生成一些文件,如 StringTemplate、Volecity,但是如果我们只是需要完成一些简单重复的工作的话,依旧使用这样重量级的东西未免杀鸡用牛刀。
好在有个强大的 GNU AWK!
于是乎,花了一些时间来写了一个 awk 脚本,实现如下功能。
从 ini 文件读取键值,通过键名替换值。
其实就是一个简单的模板功能。
现在我们看一个简单的场景:
文件内容 Talk.tpl:
$(Famale) : Who are you! $(Male_FirstName) : $(Male_FirstName), $(Male_FirstName) $(Male_LastName). |
INI字典文件 Conf.ini:
Famale=Jane Male_FirstName=James Male_LastName=Bond |
执行以下命令:
gawk -f DictReplace.awk Conf.ini Talk.tpl > Talk.txt |
则会生成文件 Talk.txt:
Jane : Who are you! |
awk 脚本 DictReplace.awk:
#!/usr/bin/gawk -f # MAIN END { |
上述脚本代码在 UnxUtils 的 gawk 下执行通过。
你可以直接在这里下载完整内容查看结果并获得 gawk.exe。
AWK 的动态构造正则真要命,搞了半天才发现,直接构造字符串就可以,然后直接放到参数中就可以作为正则使用,就是上面代码的蓝色部分。不过也基本学会 AWK,以后又有件利器可用啦。
稍后再测试能否在 Linux 下工作。
2008-3-28