2013-10-23 15 views
0

Oracle的JDBC驱动程序在11.2中的新功能,从而它可以记录所有的网络数据包,但在日志文件中的每个数据包显示为一个单独的十六进制转储,格式如下:搜索十六进制字符串转储

Oct 23, 2013 9:14:46 AM oracle.net.ns.Packet receive 
TRACE_20: 11EEA7F0 Debug: type=6, length=1410, flags=0 
65 20 43 6F 72 70 6F 72  |e.Corpor| 
6F 6E 2E 20 43 6F 70 79  |on..Copy| 
72 69 67 68 74 20 32 30  |right.20| 
30 33 20 4F 72 61 63 6C  |03.Oracl| 
01 00 01 03     |.... | 

如何在日志文件中搜索字符串,因为它们可能会跨越日志文件中的多行?

+0

在您放下这个兔子洞之前,请检查您是否正在运行另一个应用程序实例,或者其他人正在连接到数据库,并且同时更改数据!这就是我的情况。 –

回答

0
sed -e :a -e '$!N;s/\n [0-9A-F][0-9A-F] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ]  |\([^|]\+\)|/\1/;ta' -e 'P;D' logfile 

在Linux上,将转换的十六进制转储logfile成字符串(与控制字符和空格保存为周期),让其他线路不变。因此,您可以将其重定向到一个文件或将其传送到您最喜欢的传呼机中,例如减。您可能需要考虑到控制字符和空格显示为搜索多个字符串时的时间段这一事实。

对于非GNU sed,可能需要将\+更改为*

相关问题