我是awk
的新手,正在努力找出特定时间范围内的所有例外。
以下是日志,
[2014-01-26 00:16:54.244][VendorProductFileProcessor-process-1][WARN] [VendorProductFileTranslatorTask:210] Failed to process vendor data: {INTERNALCASHBACKSNAPDEALSPONSOREDPERCENTAGE=#REF!, VENDOR CODE=#REF!, INTERNALCASHBACKENDDATE=#REF!, INTERNALCASHBACKTYPEVALUE=#REF!, EXTERNALCASHBACKSTARTDATE=#REF!, SKU=#REF!, EXTERNALCASHBACKTYPEVALUE=#REF!, EXTERNALCASHBACKENDDATE=#REF!, EXTERNALCASHBACKTYPE=#REF!, EXTERNALCASHBACKSNAPDEALSPONSOREDPERCENTAGE=#REF!, INTERNALCASHBACKSTARTDATE=#REF!, INTERNALCASHBACKTYPE=#REF!}, com.snapdeal.coms.exception.RuntimeErrorException: COMS-1113: Failed to translate attribute : intCashbackTotalValue value: Unparseable number: "#REF!"
现在,我试图打印所有例外情况,发生在过去1小时内。我正在使用以下awk
命令
grep Exception coms-core.log | gawk -F '[' '{ if ($2 ~ 2014-01-26 00:[0-59]:[0-59])print $2}'
但是我在执行它时会例外
gawk: { if ($2 ~ 2014-01-26 00:[0-59]:[0-59])print $2}
gawk: ^ backslash not last character on line
有人可以在这里帮我吗?
在Anubhava的答案的帮助下,使用以下AWK脚本,但是当我尝试将分钟范围用作Regex时,它现在正在工作。
grep exception coms-core.log |头-1 |gawk -f'[''$ 2〜/^2014-01-26 [00]:[0-59]/{打印$ 2}'
尝试以下尴尬:
gawk -F '[' '$0 ~ /Exception/ && $2 ~ /^2014-01-26 16:/ {print $2}' coms-core.log
- 您不需要GREP,因为Awk也可以处理该部分
- 您的尴尬语法不正确
正则表达式用前向斜线表示( /expr/
)。
使用查找命令 -
在过去1小时内找出异常查找。-maxDepth 1 -mmin -60 -name'coms -core.log'-exec grep -wi'异常'{} ;2>/dev/null