Bash 使用AWK向输出添加时间戳

Bash 使用AWK向输出添加时间戳,bash,awk,grep,Bash,Awk,Grep,您好,如何将时间戳variabl添加到此输出。 无论我在哪里键入timestamp变量,都会得到一个错误。 这是我想看到的输出 while [ ! -f /home/stopPing.txt ] ; do cat /home/ipListforPing.txt | while read output do timestamp=$(date +%d-%m-%Y_%H-%M-%S) timeout 2s ping -qc1 $output 2>&1 | awk -F

您好,如何将时间戳variabl添加到此输出。 无论我在哪里键入timestamp变量,都会得到一个错误。 这是我想看到的输出

while [ ! -f /home/stopPing.txt ] ; do 
cat /home/ipListforPing.txt |  while read output
do
    timestamp=$(date +%d-%m-%Y_%H-%M-%S)
    timeout 2s ping -qc1 $output 2>&1 | awk -F/ '/^rtt/ { printf "OK %.2f ms\n", $5; ok = 1 } END { if (!ok) print "FAIL" }' >> $output.txt
#echo "----------------"
done
sleep 1.85;
done

您可以使用strftime函数(GNU awk)在awk中添加时间戳,而无需在以下外部使用日期:

19-01-2021_03-11-48 OK 0.02 ms
没有GNU awk:

timeout 2s ping -qc1 $output 2>&1 | awk -F/ '/^rtt/ { printf strftime("%d-%m-%Y_%H-%M-%S")" OK %.2f ms\n", $5; ok = 1 } END { if (!ok) print "FAIL" }' >> $output.txt

将date命令的结果以-v作为可变时间戳传递到awk中。

我得到的错误是什么意思?请显示带有相关预期输出的示例数据,不要将其作为图像或注释发布。顺便说一句,不是我的否决票。上面命令的输出是:
OK 0.02 ms
我想在行的开头添加一个时间戳。我尝试了一下,但输出:
awk:line 2:function strftime never defined'
抱歉,这只在GNU awk上可用。如果它满足您的要求,我已经添加了一个none GNU解决方案。请接受我的回答
timeout 2s ping -qc1 $output 2>&1 | awk -v timestamp="$(date +%d-%m-%Y_%H-%M-%S)" -F/ '/^rtt/ { printf timestamp" OK %.2f ms\n", $5; ok = 1 } END { if (!ok) print "FAIL" }' >> $output.txt