grep コマンド
目的
ファイルからパターンを検索します。
構文
グレップ [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ][ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Sエパレータ ] ] { [ -e パターンリスト ... ] [ -f パターンファイル ... ] | パターンリスト ... } [ ファイル ... ]
説明
grep コマンドは、Pattern パラメーターで指定されたパターンを検索し、一致する各行を標準出力に書き出します。 パターンは、ed コマンドまたは egrep コマンドのスタイルの正規表現に限定されます。 grep コマンドは、コンパクトな決定論的でないアルゴリズムを使います。
Fileパラメータに複数のファイル名を指定した場合、grepコマンドはマッチした行を含むファイル名を表示する。 シェルに対して特別な意味を持つ文字 ($、*、[、|、^、(、)、¥) は、 Pattern パラメーター内では引用符で囲まなければなりません。 Pattern パラメーターが単純な文字列でない場合、 通常はパターン全体を単一引用符で囲まなければなりません。 のような表現では[a-z]cmlは、現在の照合順序に従って、範囲を指定する。 照合シーケンスは文字範囲内で使用する等価クラスを定義できます。 ファイルを指定しなければ、grep は標準入力を想定します。
注:
- 予測できない結果を生ずるので、grep コマンドを スペシャル・ファイル上で実行するのは避けてください。 入力行には、NULL 文字を使用しないでください。
- 入力ファイルの終わりには、改行文字を付けてください。
- 改行文字は、正規表現で一致させることはできません。
- 複数のフラグを同時に指定できますが、 フラグの中には他のフラグを指定変更してしまうものがあります。 例えば、-l オプションは、他のすべてのフラグよりも優先されます。 -E フラグと -F フラグを指定すると、最後に指定したフラグが優先されます。
フラグ
| 項目 | 説明 |
|---|---|
| -b | 各行の前に、その行が見つかったブロック番号を付けます。 このフラグを使用すると、ディスク・ブロック番号をコンテキストで見つけるときに便利です。 -b フラグは、標準入力またはパイプからの入力と一緒には使用できません。 |
| -c | 一致した行の数のみを表示します。 |
| -E | 拡張正規表現 (ERE) として指定されたものとして、指定された各パターンを扱います。 ERE の NULL 値は各行に一致します。 注:'-Eフラグを持つ'グレップコマンドは'イグレップコマンドと同じだが、エラーメッセージと使用法メッセージが異なり、'-sフラグの機能が異なる。
|
| -e PatternList | 1 つ以上の検索パターンを指定します。 このフラグは単純なパターンと同じように機能しますが、パターンが - (負) で始まるときに有効です。 パターンは改行文字で区切らなければなりません。 NULL パターンは、2 つの隣接する改行文字か、改行文字が後ろに続く引用符 ("¥n) で指定できます。 -E フラグも -F フラグも指定しなければ、各パターンは基本正規表現 (BRE) のように扱われます。 複数の -e および -f フラグは、grep によって受け入れられます。 行のマッチング時には、すべての指定されたパターンが使用されますが、評価の順序は指定されません。 |
| -F | 指定した各パターンを、正規表現ではなく文字列として扱います。 NULL 文字列は各行に一致します。 注:'-Fフラグを持つ'グレップコマンドは'フグレップコマンドと同じだが、エラーメッセージと使用法メッセージが異なり、'-sフラグの機能が異なる。
|
| -f PatternFile | 検索パターンの入ったファイルを指定します。 各パターンは改行文字で区切らなければなりません。 また、空の行は NULL パターンと見なされます。 -E フラグも -F フラグも指定しなければ、各パターンは基本正規表現 (BRE) のように扱われます。 |
| -h | マッチング行を含むファイル名がその行に付加されることを防ぎます。 複数のファイルを指定したときに、ファイル名を抑止します。 |
| -H | -r または -R オプションが指定されていて、タイプがディレクトリーのファイルを 参照するシンボリック・リンクがコマンド・ラインに指定されている場合は 、grep はそのシンボリック・リンクで参照されるディレクトリーの ファイルと、ファイル階層でその下にあるすべてのファイルを検索します。 |
| -i | 比較するときには、大文字と小文字の区別を無視します。 |
| 項目 | 説明 |
|---|---|
| -l | 一致する行を持つファイルの名前のみを (一度) 表示します。 各ファイル名は、改行文字で区切られます。 標準入力が検索される場合、パス名は(StandardInput)が返される。 -l フラグを -c および -n フラグと併用すると、-l フラグのみを指定した場合のように動作します。 |
| -L | -r または -R オプションが指定されていて、 タイプがディレクトリーのファイルを参照するシンボリック・リンクがコマンド・ラインに指定されているかまたは ファイル階層の横断中に検出された場合は、grep は、 そのシンボリック・リンクが参照しているディレクトリーのファイルおよびファイル階層でその下にあるすべてのファイルを検索します。 -H と -L の両方が指定されている場合は、 コマンド・ラインの最後に指定されているオプションが有効になります。 |
| -n | 各行の前にファイル内の相対行番号を付けます。 各ファイルは line 1 から始まり、行カウンターはファイルごとにリセットされます。 |
| -p[セパレーター] | 一致する行を含むパラグラフ全体を表示します。 パラグラフは、Separator パラメーターで指定された、 パラグラフ・セパレーターで区切られます。パラグラフ・セパレーターは検索パターンと同じ書式のパターンです。 パラグラフ・セパレーターを含んでいる行は、セパレーターとしてのみ使用され、出力には含まれません。 デフォルトのパラグラフ・セパレーターはブランク行となります。 |
| -q | 行の一致に関係なく、標準出力への書き出しをすべて抑止します。 入力行を選択した場合は、状況 0 を戻して終了します。 -q フラグを -c、-l、-n フラグと 併用すると、-q フラグのみを指定した場合のように動作します。 |
| -r | ディレクトリーを反復して検索します。 デフォルトにより、続いてそのディレクトリーへリンクします。 |
| -R | ディレクトリーを反復して検索します。 デフォルトでは、そのディレクトリーへのリンクは続きません。 |
| -s | 存在しないファイルまたは読み取れないファイルに関して通常出力されるエラー・メッセージを抑止します。 他のエラー・メッセージは抑止されません。 |
| -u | 出力をバッファーしません。 |
| -v | 指定したパターンに一致しない行をすべて表示します。 |
| -w | ワードの検索を行います。 |
| -x | 指定したパターンに正確に一致し、余分の文字がない行を表示します。 |
| -y | 比較を行うときに、大文字と小文字の区別を無視します。 |
| PatternList | 検索中に使用される 1 つ以上のパターンを指定します。 パターンは -e フラグで指定した場合と同様に扱われます。 |
| File | パターンを検索するファイル名を指定します。 File 変数が与えられない場合は、標準入力を使用します。 |
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 一致が見つかりました。 |
| 1 | 一致が見つかりませんでした。 |
| >1 | 構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。 |
例
- パターンにマッチする文字 *, ^, ?, [, ], ˶(, ˶ ), ˶{, and \}いくつかを含むパターンを使うには、次のように入力します:
のすべての行を表示しますpgm.s最初の文字が文字である。grep "^[a-zA-Z]" pgm.s - パターンにマッチしない行をすべて表示するには、次のように入力する:grep -v "^#" pgm.sのすべての行を表示しますpgm.s最初の文字が#(ポンド記号)。
- のすべての行を表示するfile1ファイルのいずれかに一致するabcまたはxyz文字列を入力する:grep -E "abc|xyz" file1
- を検索する$(ドル記号)というファイル名でtest2と入力する:
この\\(ダブル・バックスラッシュ)文字が必要である\$(シングル・バックスラッシュ、ドル記号)をgrepコマンドに追加する。 この\(シングル・バックスラッシュ)文字は、grepコマンドに次の文字(この例では$)を表現文字ではなくリテラル文字として使用する。 円記号などのエスケープ文字の使用を避けるには、fgrep コマンドを使用します。grep \\$ test2 - /tmp の中を反復して
検索しながら
IBMという語を持つファイルを検出するが、ディレクトリーを指す リンクの中の反復検索は行わないのであれば、 次のように入力します。
またはgrep –R IBM /tmpgrep –r -H IBM /tmp - /tmp の中を反復して
検索しながら
IBMと いう語を持つファイルを検出するが、リンクの中も反復検索するには、 次のように入力します。
またはgrep –r IBM /tmpgrep -R -L IBM /tmp
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/grep | grep コマンドが入っています。 |