doc/ja/man/man1/grep.1
Hiroyuki Hanai 8384f4bcfc Import Japanese Online Manuals.
The Japanese Manual team(man-jp@jp.FreeBSD.ORG) has translated
and keeps maintaining them.
Submitted by: Kazuo Horikawa <horikawa@isrd.hitachi.co.jp>
1998-02-25 04:54:20 +00:00

420 lines
10 KiB
Groff

.TH GREP 1 "1992 September 10" "GNU Project"
.\" jpman %Id: grep.1,v 1.3 1997/07/21 07:22:12 konuma Stab %
.SH 名称
grep, egrep, fgrep \- パターンにマッチする行を表示する
.SH 書式
.B grep
[\-[AB] num]
[\-HRPS]
[\-CEFGLVabchilnqsvwx]
[\-e expr]
[\-f file]
files...
.SH 解説
.B grep
は、
.I files
が指定されていればそのファイルから、ファイルが指定されて
ないか
.I files
の部分に
.B \-
が指定された場合は標準入力を読み込み、行毎に
指定したパターン
.I pattern
にマッチする部分を含んでいるかどうか調べます。
デフォルト動作では、マッチした行を表示します。
.PP
.B grep
は、以下のオプションにより大きく 3 つの動作に分かれます。
.PD 0
.TP
.B \-G
パターンとして、基本的な正規表現を扱うモード(下記参照)。デフォルトです。
.TP
.B \-E
拡張された正規表現を扱うモードです(下記参照)。
.\"ただし、本 grep は、基本の正規表現と、拡張の正規表現には、
.\"表記上の違いはありますが、機能的には差は
.\"ありません。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B \-F
パターン
.I pattern
として改行で区切られた固定の文字列パターンのリストを扱
うモードです。その文字列のどれかにマッチするかどうか調べます。
.LP
さらに、二つの同種のプログラム
.B egrep
.B fgrep
が利用可能です。
.B egrep
は、
.B "grep\ \-E"
と似ています ( が等価ではありません ) し、歴史的な UNIX
.B egrep
と互換性があります。
.B fgrep
は、
.B "grep\ \-F"
と同じです。
.PD
.LP
全ての
.B grep
の変種は、以下のようなオプションを理解します。
.PD 0
.TP
.BI \- num
.I num
で指定した行数だけ、パターンにマッチした行の前後の行も表示します。
ただし、同じ行を2度以上表示する事はありません。
.TP
.BI \-A " num"
.I num
で指定した行数だけ、パターンにマッチした行の後の行も表示します。
.TP
.BI \-B " num"
.I num
で指定した行数だけ、パターンにマッチした行の前の行も表示します。
.TP
.B \-C
.B \-2
を指定した事と同じです。
.TP
.B \-V
.B grep
のバージョン番号を標準エラー出力に表示します。バグレポート
には、この番号を付記してください ( 下記参照 ) 。
.TP
.B \-a
バイナリーファイルの検索を行いません。
.TP
.B \-b
各行の前に、ファイルの先頭からバイト単位のオフセットを表示します。
.TP
.B \-c
各行の表示はせず、マッチした行数だけを表示します。
.B \-v
オプションと共に指定した場合は、マッチしなかった行数の表示となります(下記参照)。
.TP
.BI \-e " pattern"
パターンを指定します。
.B \-
で始まっているパターンを保護するために有効です。
.\"通常は、
.\".B \-e
.\"を省略してパターンを記述する事ができます。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.BI \-f " file"
パターンを
.I file
から読み込みます。
.TP
.B \-h
複数のファイルを指定した場合、デフォルトでは、マッチした行の前に、
ファイル名を付けて表示が行なわれますが、
.B \-h
を指定した場合は、ファイル名を付けないようにします。
.TP
.B \-i
パターンマッチにおいて、英大文字と小文字の区別をしないようにします。
.TP
.B \-L
通常の表示を抑止し、代わりにパターンにマッチしなかったファイル名を
表示します。
.\".B \-lv
.\"と同じです。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B \-l
通常の表示を抑止し、代わりに、パターンにマッチしたファイルのファ
イル名を 1 行づつ表示します。
.\".B \-v
.\"と共に使用した場合は、マッチしなかったファイル名の表示になります。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B \-n
各行の前に、行番号を表示します。
.TP
.B \-q
通常の表示を抑止します。
.TP
.B \-s
指定されたファイルが存在しない場合や、読み込みできなかった時、
.\"デフォルトではエラーメッセージを表示しますが、
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
エラーメッセージを抑止します。
.TP
.B \-v
指定されたパターンにマッチしない行を対象にします。
.TP
.B \-w
パターンマッチを、単語全体で行なうようにします。
このテストは、部分文字列が行の始めから始まっているか、
語でない文字列が前にあるかです。
同様に、行末か語でない文字列が後に付いてなければなりません。
単語とは、アルファベット、数字およびアンダスコアからなる文字列です。
.TP
.B \-x
パターンマッチを、行全体で行なうようにします。
.PP
FTS ライブラリとともにコンパイルした場合、以下のオプションが
利用可能です。
.PD 0
.TP
.BI \-H
.I \-R
オプションが指定されていれば、コマンドラインのシンボリックリンクも
調べられます (木を探索している時に遭遇したシンボリックリンクは
調べられません) 。
.TP
.BI \-L
.I \-R
オプションが指定されていれば、全てのシンボリックリンクが調べられます。
.TP
.BI \-P
.I \-R
オプションが指定されていれば、シンボリックリンクはたどられません。
.TP
.BI \-R
ファイルを探索する代わりに、ファイルを根とするファイル階層を探索します。
.TP
.PD
.SH "正規表現"
.PP
正規表現は、一連の文字列を表現するパターンの事です。正規表現は、より小さな
表現を組み合わせるさまざまな演算子を用いる事により、数式表現と同じような
表現を作成する事ができます。
.PP
.B grep
は、基本的な正規表現と
.\"古い UNIX の egrep に相当する
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
拡張正規表現の 2 種類の正規表現を扱う事ができます。
.RB "GNU\ " grep
では、どちらの表現も機能的に違いありません。
他の実装では、基本正規表現は拡張正規表現より能力が低くなっています。
ここでは、拡張正規表現について説明します。
基本正規表現との違いは、その後に説明します。
.PP
正規表現の基本単位は、単一の文字にマッチします。
アルファベットや数字などの多くの文字は、それ自身にマッチします。
また、特殊な意味のあるメタ文字も、その文字の前にバックスラッシュ (`\e')
を付ける事で、その本来の文字にマッチするようになります。
.\"例えば
.\".B 0
.\"は 0 にマッチし、
.\".B \e[
.\"は [ にマッチします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.PP
.B [
.B ]
で囲まれた文字のリストは、そのリストの中に含まれる文字のどれか
にマッチします。ただし、リストの先頭にカレット
.B ^
を書いた場合は、そのリストに含まれ
.I ない
文字にマッチします。
例えば、
.B [0123456789]
は数字 1 文字にマッチします。
.\".B [^0123456789]
.\"は数字以外の 1 文字にマッチします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
ASCII 文字の範囲は最初と最後の文字をハイフン (`-') でつなぐことで
指定できます。
.\"例えば、
.\".B [0-9]
.\"は数字 1 文字にマッチします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
[:クラス名:]で、特定の文字クラスを指定することができます。クラスには、
.BR [:alnum:] ,
.BR [:alpha:] ,
.BR [:cntrl:] ,
.BR [:digit:] ,
.BR [:graph:] ,
.BR [:lower:] ,
.BR [:print:] ,
.BR [:punct:] ,
.BR [:space:] ,
.BR [:upper:] ,
.B [:xdigit:]
があります。
例えば、
.B [[:alnum:]]
.B [0-9A-Za-z]
と同じですが、
.B [:alnum:]
で指定した方が ASCII コード順に依存せず、後者の方が可搬的です。
(注:クラス名の鈎括弧はシンボル名の一部であり、
リストを区切る鈎括弧とは別に指定する必要があります。)
リストの中では、ほとんどの特殊文字は、通常の文字として扱われます。
また、次の文字も、リストの中の位置によっては、通常の文字として扱われます。
文字
.B ]
を含むためにはリストの先頭においてください。同様に、文字
.B ^
を含むためには先頭以外においてください。文字
.B \-
を含むためには、最後においてください。
.PP
.\"例えば、[][] は ] か [ にマッチします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.PP
ピリオド
.B .
は、任意の 1 文字にマッチします。
シンボル
.B \ew
は、
.B [[:alnum:]]
と同じで、
シンボル
.B \eW
は、
.B [^[:alnum:]]
と同じです。
.PP
カレット
.B ^
と、
ドル記号
.B $
は、それぞれ行の先頭と行の最後にマッチするメタ文字です。
シンボル
.B \e<
とシンボル
.B \e>
は、それぞれ単語の先頭と単語の末尾にマッチするメタ文字です。
.B \eb
は単語の端にマッチします。
.B \eB
は単語の端
.I 以外
にマッチします。
.PP
次の表現は、他の正規表現を修飾します。拡張正規表現です。
.PD 0
.TP
.B ?
他の正規表現の後に指定し、0 回か 1 回マッチさせます。
.\"マッチしない場合も一致とします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B *
他の正規表現の後に指定し、0 回以上マッチさせます。
.\"マッチしない場合も一致とします。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B +
他の正規表現の後に指定し、その正規表現を 1 回以上マッチさせます。
.\"なお、少なくとも 1 回はマッチしなくてはいけません。
.\"(訳注)原文表記中に上記の表現は見当たらないので削除した。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.BI { n }
他の正規表現の後に指定し、厳密に
.I n
回マッチさせます。
.TP
.BI { n ,}
他の正規表現の後に指定し、
.I n
回以上マッチさせます。
.TP
.BI {, m }
他の正規表現の後に指定し、
.I m
回以下でマッチさせます。
.TP
.BI { n , m }
他の正規表現の後に指定し、
.I n
回以上
.I m
回以下でマッチさせます。
.PD
.PP
二つの正規表現は、つなげられます。
結果としてできあがる正規表現は、それぞれの表現にマッチするつなげられた
二つの部分文字列によって作られるどんな文字列にもマッチします。
.B |
は、二つの正規表現の間に指定し、どちらか一方がマッチすれば一致とします。
結果として得られる正規表現はどんな部分表現にマッチする文字列にも
マッチします。
.PP
.I n
が一つの数字であるような、
後方参照
.BI \e n\c
\& は、正規表現のカッコで囲まれた部分表現の
.I n
番目にマッチします。
.PP
基本正規表現では、メタ文字
.BR ? ,
.BR + ,
.BR { ,
.BR | ,
.BR ( ,
.B )
は、その意味を失います。その代わりに、バックスラッシュが付けられた
.BR \e? ,
.BR \e+ ,
.BR \e{ ,
.BR \e| ,
.BR \e( ,
.B \e)
として扱われます。
.PP
.B egrep
として起動した場合、
.B {
は、正規表現としての特殊な意味は持ちません。代わりに、
.B \e{
を使う必要があります。
.SH 診断
パターンにマッチした行が見つかった場合は、0 を、見つからなかった場合は、1 を
返します。ただし、
.B \-v
オプションが指定された場合は、逆になります。
パターンの指定の仕方が間違っていたり、ファイルがアクセスできないなどの
エラーがおきた場合は、 2 を返します。
.SH バグ
バグレポートは、
.B bug-gnu-utils@prep.ai.mit.edu
まで Email してください。この時、``Subject:'' のどこにでもいいですから
``grep'' という単語を
忘れずに入れてください。
.PP
.BI { m , n }
の表現で非常に大きな繰り返しを指定すると、非常に多くのメモリを消費します。
さらに、ある種のあいまいな正規表現を指定すると、必要となる時間とメモリ領域は
指数的に増大し、メモリ不足を起こす可能性があります。
.PP
後方参照は非常に動作が遅く、必要となる時間は指数的に増大します。