awk比较24小时数据的时间字段

时间:2017-02-20 08:09:08

标签: datetime awk text-processing

我有以下测试数据,我能够获取当前日期的数据, 如何比较从00:00:0108:00:00获取数据的时间?

Test1   prog  02/20/2017  03:45:56 Success
Test2   prog  02/20/2017  05:21:38 Fail
Test3   prog  02/20/2017  09:35:36 Success
Test4   prog  02/19/2017  06:15:56 Fail
Test5   prog  02/18/2017  07:35:16 Active
Test6   prog  02/19/2017  03:45:56 Success

我做了

a=`date +%m/%d/%Y`
awk -v a="$a" '$3==a' file

我不知道如何打破第四列,即 时间比较时间范围。

2 个答案:

答案 0 :(得分:0)

a=$(date +%m/%d/%Y)

awk -F":| *" -v a="$a" '$3==a {t=($4*60*60 + $5*60 + $6); if(t>=1 && t<=28800) print}' File

使用:space sequence作为字段分隔符。在这里,我将时间转换为秒,并检查它是否在(包括)1s8hrs之间。如果那时,打印该行。日期检查作为第一个过滤器($3==a

完成

答案 1 :(得分:0)

awk -v a=`date '+%m/%d/%Y'` '$3$4 ~ a"0[0-8]"' file

上面给出了今天日期所需的行。

如果您想要所有这些行,请使用:

awk '$4 ~ "0[0-8]"' file

请注意,您必须根据时间范围修改正则表达式(~之后的字符串)。