電子書籍の厳選無料作品が豊富!

初歩的な質問で申し訳ないのですが、UNIXで複数のログファイルから
エラー文字を探して、確認したい次第です。
探したい文字列:E0001
ログファイル:20110823.log
20110824.log
20110825.log等日付名のログファイルがたくさんあります。
grepコマンドを使うといいと思うのですが、ご教授いただけますでしょうか。

A 回答 (2件)

「grepコマンドを使うといい」と思ったら、まずは man grep で使い方を調べましょう。


もし、英語でわかならない、というときでも、ネットで検索すれば日本語訳も解説も見つかります。

また、複数ファイルがある場合は、シェルの機能である「パス名展開」を使うと、一定の規則にしたがったものをまとめて書くこともできます。これも man お使いのシェル(sh,csh, bash等) で調べたり、「パス名 展開」にお使いのシェルをキーワードで検索すればわかります。

> #1
> find . -exec grep E0001 \;
> find . -name '2011*.log' -exec grep E0001 \;

これだと、findが見付けたパスがgrepに渡りませんよ。単に grep E0001 としたのと同じになってしまい、標準入力からの入力待ちになってしまいます。
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
大変参考になりました。

お礼日時:2011/09/11 11:27

grep E0001 *.log


とかでしょうか?

2011から始まるのだけ見たいなら、
grep E0001 2011*.log
ですが。

ファイル数があまりに多い場合は、
find . -exec grep E0001 \;
というやり方もあります。

2011から始まるものだけをやる場合は
find . -name '2011*.log' -exec grep E0001 \;
ですね。

あと、こういう書き方も出来ます。
find . | egrep '^2011.*\.log' | xargs grep E0001

grepにはegrepとfgrepがあって、それぞれ正規表現でマッチするのと完全一致するのとになっています。
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
参考に記載いただいたコマンドが、例として大変分かりやすかったです。

お礼日時:2011/09/11 11:30

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