2017-02-20 20 views
0

私は以下のテストデータを持っており、現在の日付のデータを取得できました から08:00:00にデータを取得する時間をどのように比較できますか?awkは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 

私は4列目の時間帯のためにそれを比較するために、すなわち 時間を破るんどのように何の考えを持っていない

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 

フィールドseperatorsとして:space sequenceを使用してください。ここでは、時間を秒に変換して、それが(それを含めて)1s8hrsの間であるかどうかを確認しています。その場合は、行を印刷します。日付チェックは、第1のフィルタ($3==a

+0

この時間欄にも並べ替えできますか? – Sid

+0

日付の列が変化すると、行の先頭からa = $(日付+%m /%d /%Y)を検索し、次のフィールドから時刻を計算します。 – Sid

+0

@Sid:このように: 'awk -F":| * "-va =" $ a "'{i = 0; while(++ 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 

注意をあなたの時間帯に応じました。