gpt4 book ai didi

linux - 将时间转换为纪元时间并找出 2 个时间戳之间的差异

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

我想grep 开始和结束时间并得到时间戳之间的差异

输入文件:Logs.txt

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

我写的脚本如下:

awk -F"[.: ]" '/start/{printf "%s:%s:%s,", $4,$5,$6} /start/{start=($4 * 3600) + ($5 * 60) + $6} /end/{print (($4 * 3600) + ($5 * 60) + $6)-start;start=""}' log.txt

我得到的输出是:

09:21:35,-25140
10:45:00,900

但这是错误的,因为它只考虑时间,不考虑日期。那么我该如何解决这个问题。我如何使用 awk 来使用 EPOCH 时间。

最佳答案

如果你的 awk 支持 mktime() 函数,一个 gawk 扩展,试试像这样的方法:

awk -F"[.: ]" '
/start/ {start = mktime($3" "$2" "$1" "$4" "$5" "$6);
printf("%s:%s:%s,", $4, $5, $6);
}
/end/ {end = mktime($3" "$2" "$1" "$4" "$5" "$6);
print end - start;
}' log.txt

如果你想添加一个条件来确保日志文件包含开始时间和结束时间,怎么样:

awk -F"[.: ]" '
/start/ {start = mktime($3" "$2" "$1" "$4" "$5" "$6);
hms = sprintf("%s:%s:%s,", $4, $5, $6);
}
/end/ {end = mktime($3" "$2" "$1" "$4" "$5" "$6);
if (start) {
print hms end - start;
start = "";
}
}' log.txt

关于linux - 将时间转换为纪元时间并找出 2 个时间戳之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49874291/

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