somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Linux】grepのオプション

よく使うgrepですが、オプションについてあまり知らなかったのでメモしておきます。

基本

以下のようにして使います。grepは入力を受け取って実行することが多いので、単独での使い方を知らない時期もありました。

grep パターン ファイル[ ファイル2] または ディレクトリ

上記のように複数指定もできますが、ワイルドカードを使っての複数指定もできます。また、ファイルが複数あるときには、結果は以下のように表示されます。

ファイル名:マッチした行

マッチした行数

以下のようにして使います。

grep -c パターン ファイル

結果は、マッチした行の変わり行数が表示されます。

逆にマッチしない行数を調べるには、-cに加えてvオプションを使います。あまり意味はないですが、行数に限らずマッチしない行の内容を表示するときにも使えます。

以下のようにして使います。

grep -cv パターン ファイル

行番号の表示

行番号を表示するためには、nオプションを使います。

grep -n パターン ファイル

以下のように表示されます。同じファイルにマッチした行数が2つ以上ある場合に、区別できるため便利です。

ファイル名:行番号:マッチした行

大文字小文字の無視

大文字小文字を無視するためには、iオプションを使います。findコマンドでもinameオプションがあるので覚えやすいです。

grep -i パターン ファイル

これにより、パターンが大文字小文字でも、どちらにもマッチするようになりました。

再帰的

このオプションを知らないために、findで受け取った結果でgrepしているときもありました。以下のようにして使います。

grep -r パターン *
# または
grep -r パターン .

上記の場合、カレントディレクトリ以下のファイルすべてに対してgrepをすることになります。また、rオプションはRでも問題ありません。

再帰的に検索した場合、以下のオプションが使えます。

<ul>
  • --include=ファイルパターン
  • --exclude=ファイルパターン
  • --exclude-dir=パターン
  • 2つ目以降のディレクトリを検索した場合、includeであればパターンに合うものだけ、excludeであればパターンにあわないファイルまたはディレクトリを検索対象外にします。