名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
grep ユーティリティは、テキストファイルにおいてパターンを検索し、そのパターンを含むすべての行を出力します。grep は、単純な非決定性アルゴリズムを使用します。
pattern_list での $、*、[、‸、|、(、)、\ などの文字の使い方に注意してください。これらの文字はシェルに対して特別な意味を持ちます。 ' . . . ' のように pattern_list 全体を単一引用符で囲むことをお勧めします。
ファイルを指定しないと、grep は標準入力を入力とします。通常、発見された各行は標準出力に出力されます。入力ファイルが複数ある場合、発見された各行の前にファイル名を出力します。
/usr/bin/grep ユーティリティは、 regexp(5) のマニュアルページに説明されている正規表現に似た限定正規表現 を使用して、パターンマッチングを行います。
-E と -F の両オプションは、/usr/xpg4/bin/grep の pattern_list の解釈の仕方に影響を与えます。-E を指定すると、/usr/xpg4/bin/grep は pattern_list を完全な正規表現と解釈します (詳細は -E の説明を参照 ) 。-F を指定すると、grep は pattern_list を固定文字列と解釈します。両方のオプションを省略すると、grep は pattern_list を基本正規表現と解釈します (詳細は regex(5) のマニュアルページを参照)。
以下のオプションは、/usr/bin/grep と /usr/xpg4/bin/grep で指定できます。
各行の先頭に、その行が発見されたブロックの番号を出力します。これは、ブロック番号を文脈別に見つける際に役立ちます (最初のブロックは 0 です)。
パターンを含む行の数だけを出力します。
複数のファイルを検索するときにファイル名を出力しません。
比較中に大文字と小文字を区別しません。
一致した行が 1 行でもあるファイルのファイル名だけを、1 ファイルずつ復帰改行で区切って出力します。パターンが 2 回以上見つかっても、ファイル名の出力は 1 回だけです。
各行の先頭に、ファイルにおけるその行の行番号を出力します (最初の行は 1 です) 。
存在しないファイルや読めないファイルに対してのエラーメッセージを抑制します。
パターンを含む行を除いたすべての行を出力します。
表現が \< と \> で囲まれている場合のように、表現を単語として検索します。
以下のオプションは /usr/xpg4/bin/grep のみで指定できます。
入力の検索時に用いるパターンを 1 つ以上指定します。複数のパターンを pattern_list に指定する場合、各々を復帰改行文字 (NEWLINE) で区切る必要があります。空のパターンは、復帰改行文字を 2 つ連続して指定することにより表せます。 -E または -F オプションを指定した場合を除き、各パターンは基本正規表現として 扱われます。複数個の -e および -f オプションを指定することが可能です。行のマッチングにおいて、 指定されたパターンはすべて使用されますが、 評価の順序は未定です。
完全な正規表現を使ってマッチングを行います。 指定した各パターンは完全な正規表現として扱われます。 ある完全な正規表現の全体が入力行と一致したとき、 その行は一致したことになります。 空の完全な正規表現は、すべての行と一致します。 各パターンは、 regex(5) のマニュアルページに記述されているように、 完全な正規表現 として解釈されます。ただし \( や \) は例外で、以下の指定も含まれます。
完全な正規表現の後に + が付加されているとき。これはその表現の 1 回以上の出現に一致します。
完全な正規表現の後に ? が付加されているとき。これはその表現の 0 または 1 回の出現に一致します。
複数の完全な正規表現が | または復帰改行文字で区切られているとき。 これは、いずれかの表現と一致する文字列に一致します。
完全な正規表現が括弧 () で囲まれているとき。これはグループ化を表します。
pattern_file が示すパス名で指定したファイルから、 1 つまたは複数のパターンを読み込みます。 pattern_file 中のパターンの終了は、復帰改行文字により表されます。 空のパターンは、 pattern_file 中に空の行を記述することにより表せます。 -E または -F オプションを指定した場合を除き、各パターンは基本正規表現として 扱われます。
固定文字列を使ってマッチングを行います。 指定された各パターンを、正規表現ではなく文字列と見なします。 いずれかのパターンが連続したバイトとして入力行の中に現れた場合、 その行は一致します。空の文字列はすべての入力行と一致します。 詳細については fgrep(1) を参照してください。
行が一致したかどうかに関わらず、 標準出力には何も書き出しません。入力行に一致した行があった場合、 0 の終了ステータスで処理を終了します。
固定文字列全体または正規表現と完全に一致する入力行だけを、一致する行とみなします。
-e pattern_list オプションの指定は、 pattern_list オペランドと同じ結果をもたらしますが、 pattern_list がハイフン区切り文字で始まる場合には便利な方法です。 また、複数のパターンを別個の引数として用いたい場合にも便利な方法です。
-e と -f の両オプションは、それぞれ複数個指定できます。 入力テキスト行のマッチングにおいて、 grep は指定されたすべてのパターンを使用します。 なお評価の順序は指定されないので注意してください。 空の文字列をパターンとして使用したいときは、 すべての行と一致するそのパターンを最初に記述し、 それ以外のパターンをうまく無視させることができます。
-q オプションは、一群のファイル中に特定のパターンまたは文字列が存在しているかどうかを簡単に見分ける手段として使えます。複数のファイルを検索する場合、最初に一致するものを見つけたところで 処理を終了するので、性能が向上します。また、引数として複数のファイルを指定する場合でも、それほど注意は 必要ありません。なぜなら、前の方の file オペランドで指定したファイルでアクセスエラーや読み取りエラーが 発生しても、そのあとで一致するものが見つかれば、grep は 0 の終了ステータスで終了するためです。
ファイルが 2 ギガバイト ( 231 バイト) 以上ある場合の grep の動作については、 largefile(5) を参照してください。
以下の例は、 text.mm というファイルを検索し、 Posix という文字列 (大文字と小文字は区別しない) が現れている箇所すべてを行番号とともに出力します。
example% /usr/bin/grep -i -n posix text.mm |
次の例は、標準入力中の空の行を見つけるものです。
example% /usr/bin/grep ‸$ |
これは次のように指定することもできます。
example% /usr/bin/grep -v . |
以下の例はすべて、abc と def という 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' |
以下の 2 つの例はともに、abc または def のどちらかの文字列と完全に一致している行をすべて出力します。
example% /usr/xpg4/bin/grep -E '‸abc$ ‸def$' example% /usr/xpg4/bin/grep -F -x 'abc def' |
grep の実行に影響を与える環境変数 LANG、LC_ALL、LC_COLLATE、 LC_CTYPE、 LC_MESSAGES、 NLSPATH についての詳細は、 environ(5) を参照してください。
以下の終了ステータスが返されます。
一致するものが 1 つ以上見つかった
一致するものが 1 つも見つからなかった
(一致するものが見つかった場合でも) 構文エラーが検出された、またはアクセスできないファイルがあった
次の属性については attributes(5) のマニュアルページを参照してください。
egrep(1), fgrep(1), sed(1), sh(1), attributes(5), environ(5), largefile(5), regex(5), regexp(5), XPG4(5)
1 行は、 仮想記憶に使用できるサイズに制限されています。 入力行中に空文字がある場合、 grep は最初の空文字までマッチングを行います。最初の空文字までのマッチングで一致した場合は、行全体が出力されます。
入力ファイルが LINE_MAX バイトよりも長い行を含んでいる場合、 またはバイナリデータを含んでいる場合の結果は特定されません。 LINE_MAX は /usr/include/limits.h で定義されます。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項