我需要从日志文件中提取特定时间范围的日志消息。以下不起作用。 请帮忙
hour=`date +%H`
hour=`expr $hour - 1`
echo $hour
start1=$hour":00:00"
start="$start1"
end1=$hour":59:59"
end="$end1"
awk '$0 >= $start && $0 <= $end' server.log
但是以下命令可以从命令行运行 awk&#39; $ 0&gt; =&#34; 11:00:00&#34; &安培;&安培; $ 0&lt; =&#34; 11:59:59&#34;&#39; server.log的
答案 0 :(得分:2)
您正在使用awk
读取错误的变量。这是一种阅读它们的方法
awk '$0 >= s && $0 <= e' s="$start" e="$end" file
你也不应该使用旧的和过时的背景,但是使用这样的括号:
hour=$(date +%H)
要删除一小时,请执行
hour=$(date +%H -d 1h)
获得分钟:
date +%H":00:00" -d 1h
11:00:00
date +%H":59:59" -d 1h
11:59:59
一气呵成:
awk '$0>=s && $0<=e' s='$(date +%H":00:00" -d 1h)' e='$(date +%H":59:59" -d 1h)' file
参考ED评论:
awk -v s='$(date +%H":00:00" -d 1h)' -v e='$(date +%H":59:59" -d 1h)' '$0>=s && $0<=e' file