0

Oracle の JDBC ドライバーには 11.2 の新機能があり、すべてのネットワーク パケットをログに記録できますが、ログ ファイルでは、各パケットは次の形式で個別の 16 進ダンプとして表示されます。

 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                 |....    |

ログ ファイル内の複数の行にまたがる可能性があるため、ログ ファイルで文字列を検索するにはどうすればよいですか?

4

1 に答える 1

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 では、16 進ダンプlogfileを文字列 (制御文字とスペースをピリオドとして保持) に変換し、他の行はそのままにします。したがって、これをファイルにリダイレクトするか、お気に入りのページャー (例: less) にパイプするだけです。複数の単語文字列を検索する場合、制御文字とスペースがピリオドとして表示されるという事実を考慮する必要がある場合があります。

\+GNU 以外の sed では、 に変更する必要がある場合があります*

于 2013-10-23T10:09:56.223 に答える