- - PR -
正規表現について教えてください。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-12 14:20
テキスト形式で保存しているあるログファイルの内容を
データベースに保存したくて、必要なログの項目を洗い出す作業をしております。 以下のようなログで、各項目は出現する順番が異なります。 id=firewall time="2007-04-01 00:00:02" msg="Close outbound" type=ok proto=tcp src=172.17.1.1 srcport=1222 dst=192.168.2.5 dstport=139 rule=15 id=firewall time="2007-04-01 00:00:03" flt_action=Block msg="Close outbound" type=ng proto=tcp src=172.17.1.2 srcport=1222 dst=192.168.3.1 dstport=80 rule=15 このようなログから、 time,src,srcport,dst,dstport の形式に直したいと考えています。 お知恵をお貸しください。 | ||||
|
投稿日時: 2007-06-12 16:05
kataと申します。
シェルスクリプトなどで行うのであれば、 awk、grep、cutなどのコマンドの組み合わせでできませんか? Firewallのログ採取のようですが、 Firewallの機種によっては、設定で出力されるログの順番や形式を変更することができるものもあります。 どのような形で取り込みたいのかにもよると思います。 私の場合は、 @syslogサーバでFirewallのログを収集 ADB(Postgres)サーバにINSERT BApache+PHPでブラウザ表示 というシステムを構築したことがあります。 以上、ご参考までに。 [ メッセージ編集済み 編集者: kata 編集日時 2007-06-12 16:07 ] | ||||
|
投稿日時: 2007-06-12 22:28
出現する順番が変化するログですか。
まずその妙な仕様をどうかするべきだと思いますが… 力技ならこんな感じですかねぇ… while read i do echo -n $i | sed 's/.*time="\([0-9 :-]*\).*".*/\1/' echo -n , (省略) done | ||||
|
投稿日時: 2007-06-13 13:17
こんにちは。
こんなのでどうでしょうか(perl)
(※ 逆スラッシュは全角になってます…) | ||||
|
投稿日時: 2007-06-13 15:46
皆さんありがとうございます。
Ayさんのperlスクリプトの例には、感激しました。処理が早い! 150万行の解析を2分少々で完了しました。 ちょこっと修正して利用させていただきます。 |
1