オンラインテキスト目次
パターンマッチとgrep目次

grepの簡単な使い方

mizutani@edu.tuis.ac.jp
grepを実際に使ってみるために,サンプルファイルcopying.txt(GNU GENERAL PUBLIC LICENSEの文書)を利用してみよ.
目次
grepの使い方(I)
grepの使い方(II)
grepの主なオプション
grepで使える正規表現
grepで使えるメタ文字

目次

grepの使い方(I)

grepは次の形式に従って,指定したファイルfilenameに対してパターン/pattern/のパターンマッチを行う.

% grep pattern filename

filenameとして複数のファイル名を指定すると,それらのファイルを対象に処理を行う.

パターンに正規表現を使わなくてもgrepは有用である. 以下の例では,検索対象となるファイル群があると思われるディレクトリにワーキングディレクトリを移動しているとする. そうでなければ,検索ファイル(群)の指定には目的とするディレクトリまでのディレクトリパスも指定する必要がある.

たとえば,パターンマッチのターゲットとするファイルcopyingに対して,次のようにgrepを使う.

  1. ターゲットとするファイルcopying.txtに対して,パターン/programs/を指定すると,このパターンを含む行(4行)を返しているのである(grepでパターン/pattern/を指定するときには,記号『/』は省いてpatternだけを指定する). パターンとして/program/とすると,ヒットする行は26行になってしまう!.
    
    % grep programs copying.txt
    your programs, too.
    in new free programs; and that you know you can do these things.
    programs whose distribution conditions are different, write to the author
    proprietary programs.  If your program is a subroutine library, you may
    
    

  2. ターゲットとするファイル指定を*.txtとして 拡張子『.txt』の付くすべてのファイルとすることができる.
    
    % grep programs *.txt
    copying.txt: your programs, too.
    copying.txt: in new free programs; and that you know you can do these things.
    copying.txt: programs whose distribution conditions are different, write to the author
    copying.txt: proprietary programs.  If your program is a subroutine library, you may
    apple.txt: application. Now here is an AppleScript programs that accomplishes the same task
    
    
    このときには,ファイル名の後にマッチしたパターンを含む行を表示する.

目次

grepの使い方(II)

filenameで指定するファイルからデータを入力せずに,他のコマンドからの出力をパイプしてフィルタとして次のような形でgrepを使うことができる.


% 他のコマンドからの出力 | grep pattern

たとえば,マッチした総行数を表示するオプション「-c」を付けて調べると,ファイルcopying.txtにはパターン/the/を含む行を169行あることが分かる.


% grep -c the copying.txt
169

パターン/the/を含む169行の中から,さらにパターン/programs/を含む行を抜き出すには,最初のgrepの結果をパイプしてさらにgrepに渡してやると,次のように2行を得ることができる.

% grep the copying.txt | grep programs
in new free programs; and that you know you can do these things.
programs whose distribution conditions are different, write to the author

目次

grepの主なオプション

grepには次のようにオプションoptionを指定することができる.


% grep option pattern filename

オプション 意味
-c マッチした総行数の表示
-i 大文字小文字を区別しない
-n 行番号をつけて表示
-v 指定したパターンを含まない行だけを表示
-l(エル) 指定したパターンを含むファイル名だけを表示

目次

grepで使える正規表現

patternには,次の表の正規表現を使うことができる. ただし,パターンが正規表現のときには『'.......'』と引用符で囲む.

grepで使われる正規表現
意味
c メタ文字でない文字"c"はその文字自身を表す
\m メタ文字"m"のその文字自身を表す
^(ハット) 行頭を表す
$ 行末を表す
.(ピリオド) 任意の1文字を表す
[c1c2....cn] 文字集合c1c2...cnの中の任意の1文字
[c1-c2] c1からc2までの文字範囲の中の任意の1文字
[^c1c2...cn] c1c2...cnのどれでもない任意の1文字
r* 正規表現rの0回以上の繰り返しを表す
r1r2 正規表現r1に正規表現r2が続く並びを表す
\(r\) タグ付き正規表現r(正規表現のグループ化)を表す
\N N番目のタグ付き表現がマッチした文字列を表す.