2017-02-20 39 views
0

我有以下測試數據,我已經能夠獲得當前日期的數據, 我怎樣才能比較時間讓我的數據從00:00:0108:00:00awk比較時間字段爲24小時數據

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 

我有我怎麼打破第四列即 時間來比較它的時間範圍內沒有想法。

回答

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

+0

是否可以在此時間欄上進行排序? – Sid

+0

是否有可能如果日期列變化,因爲它在行的開頭搜索a = $(日期+%m /%d /%Y),並且當發現然後計算下一個字段的時間 – Sid

+0

@Sid:像這樣:'awk -F「:| *」-va =「$ a」'{i = 0; (++i≤NF){if(match($ i,a)){t =($(i + 1)* 3600 + $(i + 2)* 60 + $(i + 3)); if(t> = 1 && t <= 28800)print}}}'File' –

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

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

如果你想所有的這些線,然後使用:

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

請注意,您必須修改根據您的時間範圍內的正則表達式(~後的字符串)。