日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GREP(1) GREP(1) 名称 grep, egrep, fgrep, zgrep, zegrep, zfgrep, bzgrep, bzegrep, bzfgrep - パターンにマッチする行を表示する 書式 grep [options] PATTERN [FILE...] grep [options] [-e PATTERN | -f FILE] [FILE...] 解説 grep は、FILE で名前を指定された入力ファイル (ファイルが指定されてない か、FILE の部分に - が指定された場合は標準入力) を読み込み、与えられた PATTERN にマッチする部分を含む行を探します。デフォルト動作では、grep は マッチした行を表示します。 さらに、2 つのプログラム egrep と fgrep を利用可能です。egrep は grep -E と同じです。fgrep は grep -F と同じです。zgrep は grep -Z と同 じです。zegrep は grep -EZ と同じです。zfgrep は grep -FZ と同じです。 オプション -A NUM, --after-context=NUM NUM で指定した行数だけ、パターンにマッチした行の後の行も表示しま す。マッチしたグループの間には、-- を含む行を挿入します。 -a, --text バイナリファイルをテキストファイルであるかのように処理します。こ れは --binary-files=text オプションと等価です。 -B NUM, --before-context=NUM NUM で指定した行数だけ、パターンにマッチした行の前の行も表示しま す。マッチしたグループの間には、-- を含む行を挿入します。 -C NUM, --context=NUM NUM で指定した行数だけ、パターンにマッチした行の前後の行も表示し ます。マッチしたグループの間には、-- を含む行を挿入します。 -b, --byte-offset 各出力行の前に、入力ファイルの先頭からのバイト単位のオフセットを 表示します。 --binary-files=TYPE ファイルの最初の数バイトが、ファイルの内容がバイナリファイルであ ることを示す場合、ファイルのタイプを TYPE であると仮定します。デ フォルトでは TYPE は binary であり、grep は通常、バイナリファイ ルの一致を示す一行メッセージを表示するか、マッチしない場合にはな にも表示しません。TYPE が without-match の場合、grep はバイナリ ファイルはマッチしないものと仮定します。これは -I オプションと等 価です。TYPE が text の場合、grep はバイナリファイルをテキストで あるかのように扱います。これは -a オプションと等価です。警告: grep --binary-files=text はバイナリのゴミを表示する可能性があり ます。出力先が端末である場合で、端末ドライバがこのゴミの一部をコ マンドであると解釈する場合、このゴミが悪い副作用をおよぼす可能性 があります。 --colour[=WHEN], --color[=WHEN] マッチした文字列を GREP_COLOR 環境変数でで指定されたマーカで囲み ます。WHEN は、`never' または `always'、`auto' のどれかです。 -c, --count 通常の出力はせず、各入力ファイルについてマッチした行数を表示しま す。-v, --invert-match オプションと共に指定した場合は、マッチし なかった行数を表示します (下記参照)。 -D ACTION, --devices=ACTION 入力ファイルがデバイス、FIFO もしくはソケットの場合、ACTION を 使ってその処理を行いますデフォルトでは ACTION は read であり、デ バイスが通常ファイルであるかのように読み込むことを意味します。 ACTION が skip なら、デバイスを黙って読み飛ばします。 -d ACTION, --directories=ACTION 入力ファイルがディレクトリの場合に、ACTION を使ってその処理を行 います。デフォルトでは ACTION は read であり、ディレクトリを普通 のファイルであるかの様に読み込むことを意味します。ACTION が skip なら、ディレクトリを黙って読み飛ばします。ACTION が recurse な ら、grep は各ディレクトリ下のすべてのファイルを再帰的に読み込み ます。これは -r オプションと等価です。 -E, --extended-regexp PATTERN を拡張された正規表現として扱います (下記参照)。 -e PATTERN, --regexp=PATTERN PATTERN をパターンとして指定します。- で始まるパターンを保護する ために有効です。 -F, --fixed-strings PATTERN を改行で区切られた固定文字列のリストとして扱います。その 文字列のどれかとマッチするかを調べます。 -P, --perl-regexp PATTERN を Perl の正規表現として解釈します。このオプションは FreeBSD ではサポートされていません。 -f FILE, --file=FILE パターンを FILE から 1 行ごとに読み込みます。空のファイルはパ ターンを含まないので、何にもマッチしません。 -G, --basic-regexp PATTERN を基本的な正規表現として扱います (下記参照)。デフォルト です。 -H, --with-filename 各々のマッチに対してファイル名を表示します。 -h, --no-filename 複数ファイルを検索した時に、出力の前にファイル名を付けることを抑 制します。 --help 簡単なヘルプメッセージを出力します。 -I バイナリファイルをマッチするデータを含まないかのように処理しま す。これは --binary-files=without-match オプションと等価です。 -i, --ignore-case PATTERN と入力ファイルの双方で、英大文字と小文字の区別をしないよ うにします。 -L, --files-without-match 通常の出力はせず、このオプションを指定しなかったときに全く出力さ れない入力ファイルの名前を表示します。スキャン動作は最初のマッチ で終了します。 -l, --files-with-matches 通常の出力はせず、このオプションを指定しなかったときに出力される 入力ファイルの名前を表示します。スキャン動作は最初のマッチで終了 します。 -m NUM, --max-count=NUM NUM 個のマッチした行のあと、ファイルの読み込みを停止します。も し、通常ファイルから標準入力を介して入力が行われており、NUM 個の マッチした行が出力だった場合、その後に続くコンテキスト行があるか どうかに関わらず、grep は、終了する前に標準入力が最後にマッチし た行の直後に位置される事を保証します。これによって、呼び出したプ ロセスが検索を再開する事が可能となります。NUM 個のマッチした行の 後に停止した場合、grep は、その後に続くコンテキスト行を出力しま す。-c や --count オプションも指定された場合、grep は NUM より大 きな行数を出力しません。-v や --invert-match オプションも指定さ れた場合、grep は NUM 個のマッチしない行の出力後に停止します。 --mmap 可能ならば、デフォルトの read(2) システムコールの代わりに mmap(2) システムコールを使って入力を読み込みます。ある状況におい て、--mmap はよりよい性能をもたらします。しかし、grep の動作中に 入力ファイルが小さくなるか、または I/O エラーが生じた場合に、 --mmap は (コアダンプを含む) 未定義の動作を引き起こす可能性があ ります。 -n, --line-number 各出力行の前に、入力ファイルにおける行番号を表示します。 -o, --only-matching マッチした行の PATTERN にマッチした部分のみを表示します。 --label=LABEL 実際には標準入力からの入力を、ファイル LABEL からの入力として表 示します。これは zgrep などのツールに対して、特に便利です。例: gzip -cd foo.gz |grep --label=foo something --line-buffered 行ごとに出力をおこないます。これはパフォーマンスが悪くなる事があ ります。 -q, --quiet, --silent 沈黙: 標準出力には何も出力しません。何かマッチした場合、エラーが 起きた時でも直ちに返り値 0 で終了します。-s や --no-messages オ プションも参照。 -R, -r, --recursive 各ディレクトリ下のすべてのファイルを再帰的に読み込みます。これは -d recurse オプションと等価です。 --include=PATTERN PATTERN にマッチするファイルのみを検索しながら、ディレクトリを再 帰します。 --exclude=PATTERN PATTERN にマッチするファイルを読み飛ばしながら、ディレクトリを再 帰します。 -s, --no-messages 指定されたファイルが存在しないことや読み込みできないことを示すエ ラーメッセージを抑止します。移植性に関する注: GNU grep とは異な り、伝統的な grep は POSIX.2 に適合していませんでした。なぜな ら、伝統的な grep には -q オプションが無く、-s オプションは GNU grep の -q オプションの様に動作したからです。伝統的な grep へ移 植可能であることを意図したシェルスクリプトは、-q と -s を両方と も使わずに、出力を /dev/null へリダイレクトすべきです。 -U, --binary ファイルをバイナリとして扱います。デフォルトでは、MS-DOS と MS Windows 環境下で grep は、ファイルから読み込んだ最初の 32KB の内 容を見て、ファイルタイプを推測します。grep はファイルをテキスト ファイルと判断した場合、オリジナルのファイル内容から (^ と $ が 使われている正規表現を正しく動作させるために) CR 文字を取り除き ます。-U を指定すると、この当て推量を抑制し、すべてのファイルを 読み込んでマッチ機構へそのまま渡します。もしファイルが各行の末尾 に CR/LF の組みを持つテキストファイルなら、このオプションは正規 表現を役に立たなくさせることがあるでしょう。このオプションは MS DOS と MS-Windows 以外のプラットフォームでは効果がありません。 -u, --unix-byte-offsets unix 形式のバイト単位オフセットを報告します。このスイッチを指定 すると grep は、ファイルが unix 形式のテキストファイル、すなわ ち、CR 文字が取り除かれたファイルであるかのごとくにバイト単位オ フセットを報告します。このことは grep を Unix マシンで動作させた のと同じ結果を生成します。このオプションは -b オプションも使用し ない限り効果がありません。MS-DOS と MS-Windows 以外のプラット フォームでは効果がありません。 -V, --version grep のバージョン番号を標準エラー出力に表示します。バグレポート には、この番号を付記してください (下記参照)。 -v, --invert-match 結果を反転し、マッチしなかった行を選択します。 -w, --word-regexp 完全な語にマッチする行のみを選択します。マッチする部分文字列が行 頭から始まっているか、単語構成文字以外の文字が前にあることがテス トされます。同様に、マッチする部分文字列が行末まであるか、単語構 成文字以外の文字が後にある必要があります。単語構成文字とは、文 字・数字・アンダスコアです。 -x, --line-regexp 行全体と正確にマッチする行のみを選択します。 -y -i と同じ意味を持つ旧式のオプションです。 --null 通常ファイル名の後に続く文字の代わりにバイト 0 (ASCII NUL 文字) を出力します。例えば、grep -l --null は各ファイル名の後に、通常 の newline ではなくバイト 0 を出力します。このオプションを指定す ると、newline 等の例外的な文字を含むファイル名に直面した場合でも 出力が明白になります。このオプションを find -print0, perl -0, sort -z, xargs -0 等のコマンドと共に使用すれば、任意のファイル名 を処理できます。ファイル名が newline 文字を含んでいても処理可能 です。 -Z, --decompress 検索を開始する前に入力データを伸長します。このオプションは zlib(3) ライブラリと共にコンパイルした場合のみ使用可能です。 -J, --bz2decompress 検索を開始する前に入力データを bzip2(1) を使用して伸長します。 正規表現 正規表現は、文字列の集合を表現するパターンの事です。数式表現と同様に、 より小さな表現を組み合わせるさまざまな演算子を用いる事で、正規表現を組 み立てます。 grep は、「基本」正規表現と「拡張」正規表現の 2 種類の正規表現文法を扱 う事ができます。GNU grep では、どちらの正規表現文法も機能的な違いはあり ません。他の実装では、基本正規表現は拡張正規表現より能力が低くなってい ます。ここでは、拡張正規表現について説明します。基本正規表現との違い は、その後に説明します。 正規表現の基本単位は、1 文字にマッチする正規表現です。文字と数字を含む 多くの文字は、それ自身にマッチする正規表現です。また、特殊な意味を持つ メタ文字も、その文字の前にバックスラッシュを付けると、その本来の文字に マッチするようになります。 角括弧式は、[ と ] で囲まれた文字のリストです。これは、そのリスト中に含 まれるどれか 1 文字にマッチします。ただし、リストの先頭がキャレット ^ の場合は、そのリストに含まれない文字にマッチします。例えば、正規表現 [0123456789] は数字 1 文字にマッチします。 角括弧式内で、範囲式はハイフンで分けられた 2 文字で構成されます。これ は、ロケールの照合順序や文字集合を用いて、この 2 文字を含み、この間に並 ぶ 1 文字にマッチするものです。例えば、デフォルトの C ロケールでは、 [a-d] は [abcd] と等価です。多くのロケールでは文字を辞書順に並べてお り、そのようなロケールでは、[a-d] は一般的に [abcd] と等価ではなく、例 えば [aBbCcDd] と等価かもしれません。角括弧式の古典的な解釈を使用するに は、LC_ALL 環境変数に値 C を設定し、C ロケールを使用してください。 最後に、特定の名前を持つ文字クラスが、角括弧式にて以下のようにあらかじ め定義されています。[:alnum:], [:alpha:], [:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:] 例えば、[[:alnum:]] は [0-9A-Za-z], と同じです が、後者が C ロケールや ASCII 文字符号化に依存するのに対して、前者はロ ケールや文字集合に依存しません。(クラス名の中の角括弧はシンボル名の一部 であり、リストを区切る角括弧とは別に指定する必要があることに注意) リス トの中では、ほとんどのメタ文字は通常の文字として扱われます。リテラル ] を含めるには、この文字をリストの先頭に置いてください。同様に、リテラル ^ を含めるには、この文字をリストの先頭以外に置いてください。リテラル - を含めるには、この文字をリストの最後に置いてください。 ピリオド . は、任意の 1 文字にマッチします。シンボル \w は [[:alnum:]] と同じ意味で、シンボル \W は [^[:alnum:]] と同じ意味です。 キャレット ^ と、ドル記号 $ は、それぞれ行頭と行末の空文字列にマッチす るメタ文字です。シンボル \< とシンボル \> は、それぞれ単語の先頭と末尾 の空文字列にマッチするメタ文字です。シンボル \b は、単語の端の空文字列 にマッチします。シンボル \B は、単語の端以外の空文字列にマッチします。 正規表現の後には、繰り返し演算子のどれかが続くことがあります。 ? 直前の項目はオプションであり、最大 1 回マッチします。 * 直前の項目は 0 回以上マッチします。 + 直前の項目は 1 回以上マッチします。 {n} 直前の項目は厳密に n 回マッチします。 {n,} 直前の項目は n 回以上マッチします。 {n,m} 直前の項目は、最低 n 回、最大 m 回マッチします。 2 つの正規表現は結合可能です。結果としてできあがる正規表現は、結合され た 2 つの部分表現にそれぞれマッチする 2 つの部分文字列を結合した任意の 文字列にマッチします。 2 つの正規表現は中置き型演算子 | で繋ぐことが可能です。結果としてできあ がる正規表現は、どちらかの部分表現にマッチする任意の文字列にマッチしま す。 繰り返しは結合に優先します。また結合は選択に優先します。これらの優先規 則を無効とするために、部分表現全体を括弧で囲むことが可能です。 n が 1 つの数字であるような後方参照 \n は、正規表現中の括弧で囲まれた n 番目の部分表現がマッチした文字列とマッチします。 基本正規表現では、メタ文字 ?, +, {, |, (, ) は、その特殊な意味を失いま す。代わりに、バックスラッシュを付けた \?, \+, \{, \|, \(, \) を使用し てください。 伝統的な egrep は、メタ文字 { をサポートしませんでした。また、このメタ 文字の代わりに \{ をサポートする egrep 実装もいくつか存在するので、移植 可能なスクリプトでは、リテラル { にマッチさせるために egrep パターンで { を使うことは避けて [{] を使うべきです。 GNU egrep は、{ が不正な範囲指定の始まりであるなら特殊文字ではない、と 想定して、伝統的な使用法のサポートを試みます。例えば、シェルコマンド egrep '{1' は正規表現の文法エラーを報告せずに、2 文字の文字列 {1 を検索 します。POSIX.2 は、この動作を一つの拡張として許可していますが、移植可 能なスクリプトではこの使用法を避けるべきです。 環境変数 grep の動作は、以下の環境変数によって影響を受けます。 ロケール LC_foo は、以下の 3 つの環境変数 LC_ALL, LC_foo, LANG がこの順 番で検査される事によって、指定されます。これらの変数の中で最初に設定さ れていたものによって、ロケールが指定されます。例えば、LC_ALL が設定され ておらず、LC_MESSAGES が pt_BR に設定されていた場合、ブラジルのポルトガ ル語が LC_MESSAGES ロケールに対して使用されます。これらの環境変数がどれ も設定されていなかったり、もしくはロケールのカタログがインストールされ ていなかったり、また grep が各国語サポート (NLS) なしでコンパイルされて いた場合、C ロケールが使用されます。 GREP_OPTIONS この変数は明示的なオプションの前に指定されるデフォルトオプション を指定します。例えば、もし GREP_OPTIONS が '--binary- files=without-match --directories=skip' である場合、grep は 2 つ のオプション --binary-files=without-match と --directories=skip が明示的なオプションの前に指定されている様に動作します。オプショ ンの指定は空白によって区切られます。バックスラッシュは次の文字を エスケープします。これは空白やバックスラッシュを含むオプションを 指定するために用いられます。 GREP_COLOR ハイライトするマーカを指定します。 LC_ALL, LC_COLLATE, LANG これらの変数は、[a-z] のような範囲式を解釈する際の参照順序を決定 する LC_COLLATE を指定します。 LC_ALL, LC_CTYPE, LANG これらの変数は、例えばどの文字が空白であるかなど、文字の種類を決 定する LC_CTYPE を指定します。 LC_ALL, LC_MESSAGES, LANG これらの変数は、grep の出すメッセージの言語を決定する LC_MESSAGES を指定します。デフォルトの C ロケールは、アメリカ英 語のメッセージを使用します。 POSIXLY_CORRECT 設定されている場合、grep は POSIX.2 として動作し、それ以外の場合 は grep は他の GNU プログラムのように動作します。POSIX.2 では ファイル名の後に続くオプションはファイル名として扱われます。デ フォルトでは、このようなオプションはオペランドリストの先頭に並び 変えられて、オプションとして扱われます。また、POSIX.2 では認識で きないオプションは " 不法 (illegal)" であると診断されますが、法 律に違反しているわけではないので、デフォルトではこれらは"不正 (invalid)" であると診断されます。 診断 通常、選択された行が見つかった場合は 0 を、見つからなかった場合は 1 を 返します。エラーが生じた場合 2 を返しますが、-q や --quiet, --silent オ プションが指定されており、選択された行が見つかった場合は、その限りでは ありません。 バグ バグレポートは、bug-gnu-utils@gnu.org まで Email してください。この時、 "Subject:" のどこかに "grep" という単語を忘れずに入れてください。 {n,m} の表現で非常に大きな繰り返しを指定すると、非常に多くのメモリを消 費します。さらに、ある種のあいまいな正規表現を指定すると、必要となる時 間とメモリ領域は指数的に増大し、grep がメモリ不足を起こす可能性がありま す。 後方参照は非常に動作が遅く、必要となる時間は指数的に増大します。 GNU Project 2002/01/22 GREP(1)