我正在尝试将当前时间放在从不断增长的文本文件的每一行中拉出的几列之前,并打印到屏幕上。
tail -f dumpfile.txt|awk '{ "date +%T"|getline curtime;print curtime, $2, $7 }'
来自文件的示例输入行将是:
N 7056 65433 flags 0dbc a000 OK 0
上面的命令从尾开始打印每一行,但是在启动命令行时它只执行一次date
:
Desired Actual
13:10:05 7050 OK 13:10:04 7050 OK
13:10:05 7051 OK 13:10:04 7051 OK
13:10:06 7052 OK 13:10:04 7052 OK
13:10:06 7053 OK 13:10:04 7053 OK
13:10:07 7054 OK 13:10:04 7054 OK
13:10:07 7055 OK 13:10:04 7055 OK
13:10:08 7056 OK 13:10:04 7056 OK
我该如何重写它,以便每次插入新行时都执行date命令?
谢谢。
[第一个getline
耗尽了date
的输出(因为它只是一行),随后对getline
的调用失败,并且使curtime
保持不变。每次您从date
命令读取文件描述符时,都需要关闭该文件描述符,例如:
tail -f dumpfile.txt | awk 'BEGIN{cmd="date +%T"} {cmd|getline curtime; print curtime,$2,$7; close(cmd)}'