我试图让我的日志文件中的最后X分钟日志,然后搜索搜索字符串,如果一个例外出现在这些日志获得最后X分钟登录,并在文件中
目前,如果我有固定分钟间隔和固定字符串我能够在下面的载人
sed -n "/^$(date --date='10 minutes ago' '+%Y-%m-%d %H:%M')/,\$p" filename| grep m1 'ErrorCode="javax.naming.NameNotFoundException"'
我的日志,才达到和获得的结果看起来像
2017-04-19 10:01:35,047 529025829 ERROR [server.YCPSchedulableTrigger]
(Timer-0:) Exception sending message...
2017-04-19 10:01:35,048 529025830 ERROR [server.YCPSchedulableTrigger]
(Timer-0:) [1492596095048]Error_description_not_available 2017-04-19 10:01:35,049 529025831 ERRORDTL [server.YCPSchedulableTrigger] (Timer-0:)
[1492596095048]<?xml version="1.0" encoding="UTF-8"?> <Errors>
<Error ErrorCode="javax.naming.NameNotFoundException"
ErrorDescription="Error_description_not_available" ErrorRelatedMoreInfo="">
我的问题是,字符串和所需时n为传递作为参数的bash脚本,当我运行
sed -n "/^$(date --date='$logTracebackInterval minutes ago' '+%Y-%m-%d %H:%M')/,\$p" $file| grep -m1 "'$searchString'"
我得到一个错误
invalid date `$logTracebackInterval minutes ago'
哪,我是真的不懂,因为$logTracebackInterval
是单引号,而不是解决
我也试过
sed -n `/^date --date='$logTracebackInterval minutes ago' '+%Y-%m-%d %H:%M'/`,\$p $file| grep -m1 "'$searchString'"
这不会给我任何错误但也没有给我任何结果
任何帮助,非常感谢
如果它没有成为一个内胆,你可以用两行来避免复杂的引用:'datestart = $(date --date =“$ logTracebackInterval minutes ago”'+%Y-%m-%d%H:%M')'后面跟着sed -n“/^$ {datestart} /,\ $ p”' –
@MarkPlotnik,我知道这是解析变量的问题,但是可以在一行中做到这一点,这将是最好的 –