【发布时间】:2017-07-20 01:42:24
【问题描述】:
我需要获取当前时间发生的错误,忽略早期发生的错误。问题是日期在上面几行(与错误代码不在同一行)。如何从
返回信息***begin ibmdb error message***
它具有与当前时间相等的日期和时间,并包括所有这些错误日志数据:
*** begin ibmdb error message ***
Sun Dec 18 21:50:57 2016 - program 'execjob', User 'OSID:root', RMId 'root' Driver Version '9.0.1.14.865 2015-01-20 04:00:00'
DELETEDBREC() error on file 'USERRPT' in 'GEN'
DeleteSqlRec(lawson."USERRPT", 1)
DB2 FATAL ERROR for SQLExecute - Code: 40001/-911
[IBM][CLI Driver][DB2/AIX64] SQL0911N The current transaction has been rolled
back because of a deadlock or timeout. Reason code "68". SQLSTATE=40001
awk 'BEGIN{FS="begin ibmdb error message"} 捕获开头 - 我如何封装结尾 - Reason code "68"
【问题讨论】:
-
AWK 是面向记录的。如果您无法定义记录,请将行从您的起始模式附加到变量,直到您点击
Reason code "68"。 -
我明白了 - 所以我作为示例给出的输出将是多条记录,而 AWK 无法将这些部分作为一条记录检索。
-
有些 awk 可以使用正则表达式来分割记录,有些则不能。 GNU awk certainly can.从你的问题中也不清楚是否穿插了其他记录。所以附加行通常是一个安全的后备。 YMMV。