2014-02-15

grepで否定, OR, AND検索や正規表現を使う方法

Categories: Unix Linux
image.jpg

[ PR ]


巨大なファイルの確認に便利なgrep

grep使ってますか?

grepやsed, exなどは、大きすぎてエディタで開けないようなときにとても便利です。

echo -e "Apple\nOrange\nGrape" | grep "Orange"
# Orange

tail -f /Application/MAMP/logs/php_errors.txt | grep "Error"

ただ、例えば「PHP Notice」だけを除外するにはどうしたらいいか迷いますよね。

否定は grep -v

実は grep -v とすると否定になります。

echo -e "Apple\nOrange\nGrape" | grep  -v "Orange"
# Apple
# Grape

tail -f /Application/MAMP/logs/php_errors.txt | grep -v "PHP Notice"

これでエラーと警告だけ見ることができますね。

OR検索(または) は grep -e または egrep

ORを実現するためには、-e オプションをつけるか、egrep(または互換性のあるgrep)を使います。

echo -e "Apple\nOrange\nGrape" | grep -e "Apple" -e "Orange"
# Apple
# Orange

echo -e "Apple\nOrange\nGrape" | egrep "Apple|Orange"
# Apple
# Orange

tail -f /Application/MAMP/logs/php_errors.txt | grep -v "Warning|Error"

AND検索には grep | grep | grep ...

AND検索をするには、grepを複数重ねます

echo -e "Apple\nOrange\nGrape" | grep "r" | grep "a"
# Orange
# Grape

egrepでもOKです。

echo -e "Apple\nOrange\nGrape" | egrep "r.*a"
# Orange
# Grape

正規表現を使うには egrep

先程ちょっと出てきたegrepは、正規表現が使えます。

例えば「5文字の単語」だけを取り出すには次のようにします。

echo -e "Apple\nOrange\nGrape" | egrep "^.{5}$"
# Apple
# Grape

AまたはOで始まる単語を検索するにはこうです。

echo -e "Apple\nOrange\nGrape" | egrep "^[AO]"
# Apple
# Orange

まとめ

grepとsedを使いこなせるようになると、大きなファイルを楽に扱えるようになります。

tail -f と組み合わせて使うと、エラーログを見るのに役立ちます。

例えば、PHPのエラーを画面に出力せずに、ターミナルで確認できるようになります。

zsh最強シェル入門
zsh最強シェル入門
posted with amazlet at 14.02.15
中島 能和
翔泳社
売り上げランキング: 552,834

コメントはTwitterアカウントにお願いします。

RECENT POSTS


[ PR ]

.