我試圖讓我的日誌文件中的最後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,我知道這是解析變量的問題,但是可以在一行中做到這一點,這將是最好的 –