マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

grep(1)

名前

grep - ファイルにおけるパターンの検索

形式

/usr/bin/grep [-c | -l | 
-q] [-bhinsvw] limited-regular-expression
 
     [filename]...
/usr/xpg4/bin/grep [-E | 
-F] [-c | -l | -q] [
-bhinsvx] -e pattern_list... 
     [-f pattern_file]... [
file]...
/usr/xpg4/bin/grep [-E | 
-F] [-c | -l | -q] [
-bhinsvx] 
     [-e pattern_list]... 
-f pattern_file... [file]...
/usr/xpg4/bin/grep [-E | 
-F] [-c | -l | -q] [
-bhinsvx] pattern 
     [file]...

説明

grep ユーティリティーは、テキストファイルにおいてパターンを検索し、そのパターンを含むすべての行を出力します。grep は、単純な非決定性アルゴリズムを使用します。

pattern_list での $*[^|()\ などの文字の使い方に注意してください。これらの文字は、シェルにとっても特別な意味があるからです。次のように、pattern_list 全体を単一引用符で囲む (´...´) のがもっとも安全です。

ファイルが指定されない場合は、 grep は、標準入力を入力とみなします。 検索された各行は、通常、標準出力に出力されます。複数の入力ファイルがある場合は、 検索された各行の前にファイル名が出力されます。

/usr/bin/grep

/usr/bin/grep ユーティリティーは、regexp(5) のマニュアルページに説明されている正規表現に似た限定正規表現を使用して、パターンマッチングを行います。

/usr/xpg4/bin/grep

–E–F の両オプションは、/usr/xpg4/bin/greppattern_list の解釈の仕方に影響を与えます。–E を指定すると、/usr/xpg4/bin/greppattern_list を完全な正規表現と解釈します (詳細は –E の説明を参照 ) 。–F を指定すると、greppattern_list を固定文字列と解釈します。両方のオプションを省略すると、greppattern_list を基本正規表現と解釈します (詳細は regex(5) のマニュアルページを参照)。

オプション

次のオプションは、/usr/bin/grep/usr/xpg4/bin/grep の両方のコマンドでサポートされています。

–b

検索された各行の先頭にその行のブロック番号を付けます。文脈によりブロック番号を見つけ出す場合に便利です (最初のブロックは 0 です)。

–c

パターンを含む行の数だけを出力します。

–h

一致した行を含むファイル名をその行の先頭に追加しません。複数のファイルを検索するときに使用されます。

–i

比較中に大文字と小文字の区別を無視します。

–l

一致した行があるファイルのファイル名だけを、1 ファイルずつ復帰改行文字で区切って出力します。パターンが 2 度以上見つかるときは、ファイルの名前を繰り返しません。

–n

各行の先頭にファイル内の行番号を付けます (最初の行は 1 です)。

–q

非出力。行が一致したかどうかに関わらず、 標準出力には何も書き出しません。入力行に一致した行があった場合、 0 の終了ステータスで処理を終了します。

–s

存在しないファイルや読めないファイルに対してのエラーメッセージを抑制します。

–v

パターンを含む行を除いたすべての行を出力します。

–w

表現が \<\> で囲まれている場合のように、表現を単語として検索します。

/usr/xpg4/bin/grep

次のオプションは、/usr/xpg4/bin/grep のみでサポートされています。

–e pattern_list

入力の検索時に用いる 1 つまたは複数のパターンを指定します。複数のパターンを pattern_list に指定する場合、各々を復帰改行文字 (NEWLINE) で区切る必要があります。空のパターンは、復帰改行文字を 2 つ連続して pattern_list に指定することにより表せます。–E または –F オプションも指定した場合を除き、各パターンは基本正規表現として扱われます。grep コマンドを使って、複数個の –e および –f オプションを指定することが可能です。行のマッチングにおいて、指定されたパターンはすべて使用されますが、評価の順序は不特定です。

–E

完全な正規表現を使ってマッチングを行います。指定した各パターンは完全な正規表現として扱われます。ある完全な正規表現の全体が入力行と一致したとき、 その行は一致したことになります。空の完全な正規表現は、すべての行と一致します。各パターンは、regex(5) のマニュアルページに記述されているように、完全な正規表現 として解釈されます。ただし \(\) は例外で、以下の指定も含まれます。

  1. 後ろに + が付いている完全な正規表現。 これは、 その完全な正規表現が 1 回以上現れるものに一致します。

  2. 後ろに ? が付いている完全な正規表現。 これは、 その完全な正規表現が 0 回 または 1 回現れるものに一致します。

  3. | または復帰改行で区切られた複数の完全な正規表現。 これは、どちらかの完全な正規表現と一致する文字列に一致します。

  4. グループ化のために、 丸かっこ () で囲まれた完全な正規表現。

演算子の優先順位は、[ ]* ? +、次が連結、その次が | と復帰改行となります。

–f pattern_file

pattern_file が示すパス名で指定したファイルから、1 つまたは複数のパターンを読み込みます。pattern_file 中のパターンの終了は、復帰改行文字により表されます。空のパターンは、pattern_file 中に空の行を記述することにより表せます。–E または –F オプションも指定した場合を除き、各パターンは基本正規表現として扱われます。

–F

固定文字列を使ってマッチングを行います。指定された各パターンを、正規表現ではなく文字列と見なします。いずれかのパターンが連続したバイトとして入力行の中に現れた場合、その行は一致します。空の文字列はすべての入力行と一致します。詳細については、fgrep(1) を参照してください。

–x

固定文字列全体または正規表現と完全に一致する 入力行だけを、一致する行とみなします。

オペランド

次のオペランドがサポートされています。

file

パターンを検索するファイルのパス名。file オペランドを指定しないと、標準入力が使用されます。

/usr/bin/grep

pattern

入力の検索時に用いるパターンを指定します。

/usr/xpg4/bin/grep

pattern

入力の検索時に用いる 1 つまたは複数のパターンを指定します。オペランドは –e pattern_list が指定されたものとして扱われます。

使用法

–c–l、および –q オプションを同時に指定することはできません。同時に指定した場合、–q–c よりも優先され、c は –l よりも優先されます。

–e pattern_list オプションの指定は、pattern_list オペランドと同じ結果をもたらしますが、pattern_list がハイフン区切り文字で始まる場合には便利な方法です。また、複数のパターンを別個の引数として使用したい場合にも便利な方法です。

–e–f の両オプションは、それぞれ複数個指定できます。入力テキスト行のマッチングにおいて、grep は指定されたすべてのパターンを使用します。なお、評価の順序は指定されないので注意してください。空の文字列をパターンとして使用したいときは、すべての行と一致するそのパターンを最初に記述し、それ以外のパターンをうまく無視させることができます。

–q オプションは、一群のファイル中に特定のパターンまたは文字列が存在しているかどうかを簡単に見分ける手段として使えます。複数のファイルを検索する場合、最初に一致するものを見つけたところで処理を終了するので、性能が向上します。また、引数として複数のファイルを設定する場合でも、それほど注意は必要ありません。なぜなら、前の方の file オペランドで設定したファイルでアクセスエラーや読み取りエラーが発生しても、そのあとで一致するものが見つかれば、grep は 0 の終了ステータスで終了するためです。

大規模ファイルの動作

ファイルが 2G バイト (2 31 バイト) 以上ある場合の grep の動作については、largefile(5) を参照してください。

使用例 1 ある文字列をすべて検索する

以下の例は、text.mm というファイルを検索し、Posix という文字列 (大文字と小文字は区別しない) が現れている箇所すべてを行番号とともに出力します。

example% /usr/bin/grep -i -n posix text.mm
使用例 2 空の行をすべて検索する

次の例は、標準入力中の空の行をすべて見つけるものです。

example% /usr/bin/grep ^$

または

example% /usr/bin/grep -v .
使用例 3 ある文字列を含む行を検索する

以下のコマンドはすべて、abcdef という 2 つの文字列のどちらかまたは両方を含んでいる行をすべて出力します。

example% /usr/xpg4/bin/grep 'abc
def'
example% /usr/xpg4/bin/grep -e 'abc
def'
example% /usr/xpg4/bin/grep -e 'abc' -e 'def'
example% /usr/xpg4/bin/grep -E 'abc|def'
example% /usr/xpg4/bin/grep -E -e 'abc|def'
example% /usr/xpg4/bin/grep -E -e 'abc' -e 'def'
example% /usr/xpg4/bin/grep -E 'abc
def'
example% /usr/xpg4/bin/grep -E -e 'abc
def'
example% /usr/xpg4/bin/grep -F -e 'abc' -e 'def'
example% /usr/xpg4/bin/grep -F 'abc
def'
example% /usr/xpg4/bin/grep -F -e 'abc
def'
使用例 4 ある文字列と完全に一致する行を検索する

以下の 2 つのコマンドはともに、abc または def のどちらかの文字列と完全に一致している行をすべて出力します。

example% /usr/xpg4/bin/grep -E '^abc$ ^def$'
example% /usr/xpg4/bin/grep -F -x 'abc def'

環境変数

grep の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。

終了ステータス

次の終了ステータスが返されます。

0

一致するものが 1 つ以上見つかりました。

1

一致するものが 1 つも見つかりませんでした。

2

(一致するものが見つかった場合でも) 構文エラーが検出された、またはアクセスできないファイルがありました。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

/usr/bin/grep

属性タイプ
属性値
使用条件
system/core-os
CSI
未対応

/usr/xpg4/bin/grep

属性タイプ
属性値
使用条件
system/xopen/xcu4
CSI
有効
インタフェースの安定性
確実
標準
standards(5) を参照してください。

関連項目

egrep(1), fgrep(1), sed(1), sh(1), attributes(5), environ(5), largefile(5), regex(5), regexp(5), standards(5)

/usr/bin/grep

1 行は仮想記憶に使用できるサイズに 制限されています。入力行中に空文字がある場合、grep は最初の空文字までマッチングを行います。最初の空文字までのマッチングで一致した場合は、行全体が出力されます。

/usr/xpg4/bin/grep

入力ファイルが LINE_MAX バイトよりも長い行を含んでいる場合、またはバイナリデータを含んでいる場合の結果は不確定です。LINE_MAX/usr/include/limits.h で定義されます。