gpt4 book ai didi

linux - 在同一行打印 awk 的两个匹配变量

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:27 25 4
gpt4 key购买 nike

这是我写的脚本。

Date=$(date +'%Y-%m-%d')

for i in `awk -F"[.: ]" '/start/{start=($4 * 3600) + ($5 * 60) + $6;date=$4$5} /end/{print date;print (($4 * 3600) + ($5 * 60) + $6)-start;start=""}' logs.txt`; do
echo "$i"
done

logs.txt 包括:

11.04.2018 09:21:35 aaaaa: start_time
11.04.2018 09:22:35 aaaaa: end_time
11.04.2018 10:45:00 aaaaa: start_time
11.04.2018 11:00:00 aaaaa: end_time

在此预期输出是:

2018-04-11 09:21:35,60
2018-04-11 10:45:00,900

但我得到的输出是:

2018-04-13,0921
2018-04-13,60
2018-04-13,1045
2018-04-13,900

谁能纠正错误是什么?

最佳答案

在 GNU awk 中:

awk '
{
split($1 " " $2,a,"[.: ]") # split for mktime
s=mktime(a[3] " " a[2] " " a[1] " " a[4] " " a[5] " " a[6]) # to secs
if($4=="end_time") # at end_time
print strftime("%Y-%m-%d %H:%M:%S,",p) s-p # print start time and difference
p=s # set secs to prev
}' file
2018-04-11 09:21:35,60
2018-04-11 10:45:00,900

关于linux - 在同一行打印 awk 的两个匹配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808754/

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