我需要搜索日期时间戳格式为2014-04-01 16:45:22.084的日志文件
我从grep到awk的管道,因为日志文件的标题行包含时间戳,然后是详细信息,我需要检查标题行。
当我使用字符串运行awk时,它可以工作。
grep "2014-04-01" log |awk -F"\t" '{if ($1>"2014-04-01 14:02:41.213") print $1,$5;}'
2014-04-01 16:45:22.084 Generic_Remote_Exception
当我尝试使用日期变量时,我收到语法错误。
grep "2014-04-01" log |awk -F"\t" -vDate= "`date -d 'now-5 minutes' +%Y-%m-%d" "%H:%M:%S.%N`" '{if ($1>Date) print $1,$5;}'
awk:2014-04-08 09:30:31.061837000 awk:^语法错误
为什么awk会产生错误?
答案 0 :(得分:2)
改变这个:
awk -F"\t" -vDate= "`date -d 'now-5 minutes' +%Y-%m-%d" "%H:%M:%S.%N`" '{if ($1>Date) print $1,$5;}'
到
awk -F\t -v Date="$(date -d -5min +%Y-%m-%d" "%H:%M:%S.%N)" '$1>Date {print $1,$5}'
答案 1 :(得分:0)
awk -v Date="`date`" 'script'
在解释date
之前,将awk变量Date设置为shell命令script
的输出。
awk -v Date= "`date`" 'script'
将awk变量Date
设置为空字符串,然后尝试解释date
的输出,因为它是awk脚本,因此语法错误,因为2014-04-08 09:30:31.061837000
不是语法正确的awk脚本。