gpt4 book ai didi

date - 每次处理从 tail -f 管道传输的输入行时,如何让 awk 执行(即重新执行)系统命令(例如日期)

转载 作者:行者123 更新时间:2023-12-04 10:03:09 26 4
gpt4 key购买 nike

我试图将当前时间添加到从不断增长的文本文件的每一行中提取的几列中,然后打印到屏幕上。

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 +%T 关联的文件描述符每次您阅读它时,例如:

tail -f dumpfile.txt | awk 'BEGIN{cmd="date +%T"} {cmd|getline curtime; print curtime,$2,$7; close(cmd)}'

关于date - 每次处理从 tail -f 管道传输的输入行时,如何让 awk 执行(即重新执行)系统命令(例如日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61731906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com