, , , "END" . Awk END, BEGIN, . :
[ghoti@pc ~]$ START_TIME="2012-05-24 00:00:00"
[ghoti@pc ~]$ END_TIME="2012-05-24 01:00:00"
[ghoti@pc ~]$ echo "2012-05-24 00:10:10" | awk -v "START=$START_TIME" -v "END=$END_TIME" '{ if ( $0 < START && $0 > END) print $0 }'
awk: syntax error at source line 1
context is
{ if ( $0 < START && $0 > >>> END <<< ) print $0 }
awk: illegal statement at source line 1
[ghoti@pc ~]$ echo "2012-05-24 00:10:10" | awk -v s_time="$START_TIME" -v e_time="$END_TIME" '{ if ( $0 < s_time && $0 > e_time) print $0 }'
[ghoti@pc ~]$
, , - , , , .
if, , TRUE , , . , , , .
, . , gawk mktime(), .
[ghoti@pc ~]$ START_TIME="2012-05-24 00:00:00"
[ghoti@pc ~]$ END_TIME="2012-05-24 01:00:00"
[ghoti@pc ~]$ printf '2012-05-23 22:10:10\n2012-05-24 00:10:10\n2012-05-24 01:10:10\n' | gawk -v s_time="$START_TIME" -v e_time="$END_TIME" 'BEGIN { s=mktime(gensub(/[^0-9]/," ","G",s_time)); e=mktime(gensub(/[^0-9]/," ","G",e_time)); } { now=mktime(gensub(/[^0-9]/," ","G")); if ( now > s && now < e) print $0 }'
2012-05-24 00:10:10
[ghoti@pc ~]$
, gawk script :
BEGIN {
s=mktime(gensub(/[^0-9]/," ","G",s_time));
e=mktime(gensub(/[^0-9]/," ","G",e_time));
}
{
now=mktime(gensub(/[^0-9]/," ","G"));
if ( now > s && now < e) print $0;
}
, , / mktime() . .