借助awk获取特定时间范围内的所有异常

时间:2014-01-26 13:35:18

标签: bash awk gawk

我对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脚本,但是当我尝试使用分钟范围作为正则表达式时,它现在正在工作。

grep Exception coms-core.log |头-1 | gawk -F'[''$ 2~ / ^ 2014-01-26 [00]:[0-59] / {print $ 2}'

3 个答案:

答案 0 :(得分:1)

试试这个awk:

gawk -F '[' '$0 ~ /Exception/ && $2 ~ /^2014-01-26 16:/ {print $2}' coms-core.log
  • 你不需要grep,因为awk也可以处理那个部分
  • 你的awk语法不正确

答案 1 :(得分:0)

正则表达式用正斜杠(/expr/)表示。

答案 2 :(得分:0)

使用find命令 -

查找过去1小时内的异常 找到。 -maxdepth 1 -mmin -60 -name'coms-core.log'-exec grep -wi'exception'{} \; 2 - ;的/ dev / null的