Unix 使用awk搜索特定时间段不起作用
我需要从日志文件中提取特定时间段的日志消息。下面的方法不起作用。 请帮忙Unix 使用awk搜索特定时间段不起作用,unix,awk,Unix,Awk,我需要从日志文件中提取特定时间段的日志消息。下面的方法不起作用。 请帮忙 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 hour=`date+%H` hour=`expr$hour-1` 回声
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
hour=`date+%H`
hour=`expr$hour-1`
回声$hour
start1=$hour“:00:00”
start=“$start1”
end1=$hour“:59:59”
end=“$end1”
awk'$0>=$start&&$0=“11:00:00”&&&$0您使用awk
读取变量时出错。这里有一种阅读它们的方法
awk '$0 >= s && $0 <= e' s="$start" e="$end" file
要删除一个小时,请执行以下操作:
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
awk'$0>=s&&$0=s&&$0是否存在某种编程语言,在程序结束时初始化变量是执行操作的自然方式?我最近在awk中看到一些人这样做,我只是想弄清楚这个想法是从哪里来的,最好在程序文本之后而不是之前初始化变量。在awk中,这两种方法甚至是不等价的,因为在脚本开始后初始化的变量将在开始时未初始化,所以它不仅难以读取,而且引入了不明显的复杂性和潜在的错误。为什么人们不应该使用反勾号,除了看起来模棱两可之外,还有什么实际的缺点吗?@Jidder搜索一下,或者读这样的帖子:但总的来说,嵌套更容易阅读,效果更好。
awk '$0>=s && $0<=e' s='$(date +%H":00:00" -d 1h)' e='$(date +%H":59:59" -d 1h)' file
awk -v s='$(date +%H":00:00" -d 1h)' -v e='$(date +%H":59:59" -d 1h)' '$0>=s && $0<=e' file