gpt4 book ai didi

linux - 在 LINUX 中使用时间过滤

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

我有一个包含两列的文本文件,我正在尝试编写一个 linux 代码来过滤数据。数据具有“通过”和“失败”状态。我需要显示所有“通过”行,当前一行是“失败”并且两条线都应该在 30 秒的时间内。请帮助我完成这项工作。谢谢。下面显示了我的文本文件

12/3/2017 13:25:16 AM    fail
12/3/2017 13:25:35 AM pass
12/3/2017 14:55:11 AM pass
12/5/2017 23:46:31 AM pass
12/7/2017 13:15:35 AM pass
12/7/2017 19:25:51 AM pass
12/1/2017 15:39:09 AM fail
12/1/2017 15:39:20 AM pass
12/9/2017 21:25:45 AM pass
12/5/2017 16:25:51 AM pass

我需要的结果

12/3/2017 13:25:35 AM    pass
12/1/2017 15:39:20 AM pass

最佳答案

扩展的 GNU awk 解决方案:

awk 'function get_time(d_str){ 
split(d_str, d, /[/:[:space:]]/);
return mktime(sprintf("%d %d %d %d %d %d",d[3],d[1],d[2],d[4],d[5],d[6]))
}
$4=="pass" && status=="fail" && (get_time(prev_date)-get_time($1" "$2))<=30;
{ prev_date=$1" "$2; status=$4 }' file

输出:

12/3/2017 13:25:35 AM    pass
12/1/2017 15:39:20 AM pass

  • function get_time(d_str){ ... } - 返回从 d_str(datetime string )

关于linux - 在 LINUX 中使用时间过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680769/

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