程序的功能很简单:
调用外部解密程序decoder,将文件第二列字段解密,然后写入新文件中。
BEGIN { OFS = " " } { outputFileName = "20170523_" ARGIND ".txt" cmd = "./decoder "" $2 """ while (cmd | getline line) { $2 = line outputCmd = "tee -a "" outputFileName """ print $0 | outputCmd } close(cmd) } END { print "Done"}
两个地方值得注意:
1. ARGIND,对应ARGV下标
2. tee命令
// 重定向到文件和屏幕 -a, 向文件重定向时使用追加模式 tee -a result.txt
由于程序耗时较长,因此置于后台运行,同时不再使用tee:
BEGIN { OFS = " " } { outputFileName = "20170523_" ARGIND ".txt" cmd = "./decoder "" $2 """ while (cmd | getline line) { $2 = line print $0 > outputFileName } close(cmd) } END { print "Done"}
脚本启动命令:
awk -f decode.sh *.log &
有一个问题值得注意:
通过&虽然可以将程序置于后台运行,但是如果你关闭终端的话,程序会挂掉。可以使用nohup命令解决:
nohup awk -f decode.sh *.log &
参考资料: