来自db2diag.log字符串的Grep数据库

时间:2016-02-16 17:39:30

标签: sed grep

我想从部件EDUNAME获取数据库字符串:db2agent( PRD

我的第一次尝试不起作用; - )

sed 's/.*EDUNAME: .* (//' | sed 's/).*FUNCTION.*//

输出:

2016-02-16-15.29.08.030467+060 I11738607E972         LEVEL: Error PID 
: 28641                TID : 46912874997504  PROC : db2sysc 0
INSTANCE: db2inst               NODE : 000            DB   : PRD
APPHDL  : 0-25656              APPID: *LOCAL.db2t08.160216144150
AUTHID  : DB2ISNT              HOSTNAME: UNIX1 
EDUID   : 44342                EDUNAME: db2agent (PRD) 0 
FUNCTION: DB2 UDB, relation data serv,
sqlrr_rds_common_post, probe:1700 MESSAGE : Severe TERMINATE err at
nest lvl 1, in SQL from rtn
          SYSPROC.SYSINSTALLOBJECTS: DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes  sqlcaid : SQLCA     sqlcabc: 136  
sqlcode: -1224   sqlerrml: 0  sqlerrmc:  sqlerrp : SQLRRRCP  sqlerrd :
(1) 0x80040003      (2) 0x00000003      (3) 0x00000000
           (4) 0x00000000      (5) 0xFFFFFE0C      (6) 0x00000000  sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)
           (7)      (8)      (9)      (10)        (11)  sqlstate: 55032

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

如果你有 GNU grep,你可以执行以下操作:

 $ grep -Po ' EDUNAME: db2agent \(\K[^)]+' file
 PRD
  • -P活动支持PCRE(Perl兼容的正则表达式)
  • -o仅输出正则表达式匹配的内容。
  • 正则表达式中的
  • \K会丢弃到目前为止匹配的所有内容。
  • [^)]+然后在结束)之前捕获所有内容。

答案 1 :(得分:0)

$ cat in
2011-01-10-12.10.13.923352-300 I74680A573 LEVEL: Warning
PID : 1234 TID : 100 PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-33648 APPID: 192.168.1.1.50234.11022217100
AUTHID : DB2INST1
EDUID : 608 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, routine_infrastructure, sqlerMasterThreadReq,
probe:89
MESSAGE : FMP reported it could not create a new thread
DATA #1 : Hexdump, 4 bytes
0x000000020210F180 : 0000 0C05 ....

$ sed -n '/.* EDUNAME: \([^ ]*\).*/s//\1/p' in
db2agent

-n切换到sed表示跳过自动打印。正则表达式在EDUNAME:之后捕获非空格序列。如果正则表达式匹配,则s//\1/p重用先前的正则表达式,将匹配替换为第一次捕获并打印结果。

或许你想要下一个词:

$ sed -n '/.* EDUNAME: [^ ]* (\([^ ]*\)).*/s//\1/p' in                                                                                                     
SAMPLE