プロが教えるわが家の防犯対策術!

数100MB単位のテキストを解析するには、
どのような手法が考えられますか。


ファイルが大きすぎるため、Terapadや,Vim、VXEditor等のテキストエディタでは、
まともにファイルを開くこともできません。


状況としては、下記のようなフォーマットで記述されているテキストファイルから、
文字列検索して、目視で確認ということがやりたいです。

------------------
[2011-02-01 12:00:00] Title エラー内容
[2011-02-01 12:01:00] Title エラー内容
...
------------------



現状ではCentOSで以下の手順をとっています。
1. grepを使って『error』という文字列で列番号ごと引っ掛ける
# grep -b "fault" hogehoge.log > fault.txt

2. lessでログファイルを参照
# less fault.txt

3. 列番号にとんで、目視で確認


OSは、CentOSかWindowsで行える方法が好ましいです。
なにかいい方法があれば教えていただきますでしょうか?

以上、宜しくお願い致します。

A 回答 (4件)

???



1行1データのテキストファイルなら、そんな面倒なことしなくても、単純に
grep "検索文字列" hogehoge.log
でいいんじゃないの?
CentOSに入っているGNU版のgrepなら「-C 5 」とオプション付ければ前後5行、5を変えれば任意の行表示できますし。
-B,-Aオプションで前後別々に表示行を指定もできますし。

他にも
・splitでファイルを分割する
・sedで必要なところだけ抜き出す
・CentOS上だったら、多少の時間はかかるにせよ、数百MBくらいで「開けない」ことはまず無いと思うんですが。スワップとかtmpとかの設定は大丈夫?
・上記から、vimで問題無く開けるはずですが。
・同じく、 less hogehoge.log で開けませんか?開いた後で /?とnN で検索できますし


なんにせよ、何を目視確認したいかが不明なので、この程度のアドバイスしかできません。
    • good
    • 0
この回答へのお礼

1行1データではなく、複数行に渡っていたため、扱いに困っていました。

grepの-A オプションで複数行出力し、快適にエラーチェックができました。

ありがとうございます。

お礼日時:2011/02/01 12:59

では、私も EmEditor のご案内を。



http://jp.emeditor.com/

最大 248 GB (または21億行) という非常に大きなファイルを、少ないメモリでスムーズに開くことができるようになりました。さらに、巨大ファイルを開く速度を最適化し、従来のバージョンよりも一段と早くファイルを開けるようになりました。

ということです。

Windows のソフトですが、これだと、オリジナルのログファイルを直接読み込んで、「検索」で該当場所を探すことができるでしょう。

少なくとも、Windows なら、grep の代わりに、find を使えば、該当行の切り出しはできますから、それを切り出したファイルは、参照可能だと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

findコマンドは、知りませんでした。grepに近い感じなのですね。
Windows開発時に試したいと思います。

お礼日時:2011/02/01 13:02

エディターで見るのを優先するなら、


split(参考URL参照)というコマンドがありますので、
それでファイルを分割して、小さくしてから
エディターで見るのはいかがでしょうか。

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

エディタで見たいときは、便利そうですね。
次の機会に試してみます。

お礼日時:2011/02/01 13:04

有料ですが、



MIFES8
最大2GB×100ファイルまでオープンでき、大容量ファイルも高速に読み込みます。

参考URL:http://www.megasoft.co.jp/mifes8/product/
    • good
    • 0
この回答へのお礼

MIFES6は使ったことがあるのですが、大容量ファイルにも対応していたのですか。


今回は、有料なので敬遠させていただきます。
回答ありがとうございました。

お礼日時:2011/02/01 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!