[シェル] Grepでand検索、or検索、not検索、正規表現、再帰的に検索、圧縮ファイル内検索、など行う
こんにちは、@yoheiMuneです。
今日はシェルコマンドで良くお世話になる
[シェル] grepで前後の行も表示して、エラーログ調査を楽にしよう
本ブログでは、フロントエンド・Python・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
今日はシェルコマンドで良くお世話になる
grep
について、いろいろな絞り込み方法をブログに書きたいと思います。目次
基本的な使い方
まずはgrep
の基本的な使い方です。検索したい文字列とファイル名を指定して絞り込みを行います。
# $ grep "検索したい文字列" ファイル名 $ grep "トヨタ" twitter_ja.tsv # ワイルドカードで複数ファイルも対象にできる $ grep "トヨタ" twitter_*.tsv # catなどの処理結果をgrepもできる cat twitter_ja.tsv | grep "トヨタ"
AND条件で検索する
grep
をパイプでつなぐことで、AND条件で検索することができます。$ grep "トヨタ" twitter_ja.tsv | grep "株価"
OR条件で検索する
grep
の-e
オプションを使うことで、OR条件で検索することができます。$ grep -e "トヨタ" -e "ソニー" twitter_ja.tsv
NOT検索する
grep
の-v
オプションを使うことで、指定した文字に該当しない行を検索することができます。$ grep -v "トヨタ" twitter_ja.tsv
正規表現を使ってgrepする
検索する場合に、正規表現は大変役立ちます。E
オプションを利用して正規表現を利用します。正規表現の詳細はこちらをご参照ください。# リツイートのみを抽出 grep -E "RT\s@.*?\s" twitter_ja.tsv
指定したフォルダ以下を再帰的にgrepする
とあるフォルダ以下にあるファイルを一括でgrepしたいという時はよくありますよね。その場合にはr
オプションを利用します。# tmpディレクトリ以下を再帰的に探す $ grep -r "トヨタ" tmp tmp/subdir/ccc.dat:さようならトヨタさん tmp/bbb.txt:トヨタは愛知県にあります tmp/aaa.txt:トヨタはいい # 指定した拡張子のみを探す $ grep -r --include="*.dat" "トヨタ" tmp tmp/subdir/ccc.dat:さようならトヨタさん
圧縮ファイル内をgrepする
ログデータなどは容量削減のため圧縮して保存されることがよくあります。圧縮ファイル内はzgrep
やzcat
コマンドを使ってgrepします。# Gzip圧縮内をgrepする $ zgrep "トヨタ" aaa.txt.gz # zcatからパイプしてもOK $ zcat aaa.txt.gz | grep "トヨタ" # tar.gzの場合 # zcatした内容をパイプでgrepする # その際に、-aオプションをつけて強制的にテキストファイルとして処理する $ zcat tmp3.tar.gz | grep -a "トヨタ" # tar.gzの場合 # tarコマンドでもOK $ tar -Oxzf tmp3.tar.gz | grep "トヨタ" # zipファイルの場合 $ zcat bbb.txt.zip | grep "トヨタ" # または $ zgrep "トヨタ" bbb.txt.zip
ヒットした行の行番号を表示する
ファイルのどの辺がヒットしたのかを調べる場合には、n
オプションを利用します。$ grep -n "トヨタ" twitter_ja.tsv
他にも、grepの便利機能があります
grepに関して、他にも記事を書きました。ぜひ合わせてご覧ください、お役に立てば幸いです![シェル] grepで前後の行も表示して、エラーログ調査を楽にしよう
最後に
本日はシェルのgrepコマンドについて、いろいろな使い方をブログに書きました。僕自身シェルコマンドはあまり詳しくないので、こんな感じでブログを書いていき少しずつ覚えていければいいなーと考えています。本ブログでは、フロントエンド・Python・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!