パターンにマッチする行を表示する
PATTERN
[ FILE ...]
grep
[ options ]
[ -e
PATTERN
|
-f
FILE ]
[ FILE ...]
file
の部分に
-
が指定された場合は標準入力) を読み込み、与えられた
PATTERN
にマッチする部分を含む行を探します。
デフォルト動作では、
grep
はマッチした行を表示します。
さらに、2 つのプログラム
egrep
と
fgrep
を利用可能です。
egrep
は
grep -E
と同じです。
fgrep
は
grep -F
と同じです。
zgrep
は
grep -Z
と同じです。
-A NUM , --after-context= NUM
NUM
で指定した行数だけ、パターンにマッチした行の後の行も表示します。
-a , --text
-B NUM , --before-context= NUM
NUM
で指定した行数だけ、パターンにマッチした行の前の行も表示します。
-C [NUM], -NUM, --context[=NUM]
NUM
で指定した行数 (デフォルトは 2) だけ、パターンにマッチした行の前後の行も
表示します。
-b , --byte-offset
--binary-files= TYPE
TYPE
は
binary
であり、
grep
は通常、バイナリファイルの一致を示す一行メッセージを表示するか、
マッチしない場合にはなにも表示しません。
TYPE
が
without-match
の場合、
grep
はバイナリファイルはマッチしないものと仮定します。
これは
-I
オプションと等価です。
TYPE
が
text
の場合、
grep
はバイナリファイルをテキストであるかのように扱います。
これは
-a
オプションと等価です。
警告:
grep --binary-files=text
はバイナリのゴミを表示する可能性があります。
出力先が端末である場合で、
端末ドライバがこのゴミの一部をコマンドであると解釈する場合、
このゴミが悪い副作用をおよぼす可能性があります。
-c , --count
-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
を改行で区切られた固定文字列のリストとして扱います。
その文字列のどれかとマッチするかを調べます。
-f FILE , --file= FILE
-G , --basic-regexp
PATTERN
を基本的な正規表現として扱います (下記参照)。デフォルトです。
-H , --with-filename
-h , --no-filename
--help
-I
-i , --ignore-case
PATTERN
と入力ファイルの双方で、英大文字と小文字の区別をしないようにします。
-L , --files-without-match
-l , --files-with-matches
--mmap
-n , --line-number
-q , --quiet , --silent
-r , --recursive
-s , --no-messages
-U , --binary
-u , --unix-byte-offsets
-V , --version
-v , --invert-match
-w , --word-regexp
-x , --line-regexp
-y
--null
-Z , --decompress
ない
文字にマッチします。
例えば、正規表現
[0123456789]
は数字 1 文字にマッチします。
文字の範囲は最初と最後の文字をハイフン (`-') でつなぐことで
指定できます。最後に、特定の名前を持つ文字クラスがあらかじめ定義されています。
名前が内容を示しており、それらは、
[:alnum:] ,
[:alpha:] ,
[:cntrl:] ,
[:digit:] ,
[:graph:] ,
[:lower:] ,
[:print:] ,
[:punct:] ,
[:space:] ,
[:upper:] ,
[:xdigit:]
です。
例えば、
[[:alnum:]]
は
[0-9A-Za-z]
と同じですが、後者は \s-1POSIX\s0 ロケールや
\s-1ASCII\s0 コード順に依存しますので、
前者の方がロケールや文字集合に依存しません。
(クラス名の中の角括弧はシンボル名の一部であり、
リストを区切る角括弧とは別に指定する必要があることに注意)
リストの中では、ほとんどのメタ文字は通常の文字として扱われます。
リテラル
]
を含めるには、この文字をリストの先頭に置いてください。同様に、リテラル
^
を含めるには、この文字をリストの先頭以外に置いてください。リテラル
-
を含めるには、この文字をリストの最後に置いてください。
ピリオド
は、任意の 1 文字にマッチします。
シンボル
\w
は
[[:alnum:]]
と同じ意味で、
シンボル
\W
は
[^[:alnum:]]
と同じ意味です。
キャレット
^
と、
ドル記号
$
は、それぞれ行頭と行末の空文字列にマッチするメタ文字です。
シンボル
\<
とシンボル
\>
は、それぞれ単語の先頭と末尾の空文字列にマッチするメタ文字です。
シンボル
\b
は単語の端の空文字列にマッチします。
シンボル
\B
は単語の端
以外
の空文字列にマッチします。
正規表現の後には、繰り返し演算子のどれかが続くことがあります。
?
*
+
{ n }
n
回マッチします。
{ n ,}
n
回以上マッチします。
{ n , m }
n
回、最大
m
回マッチします。
2 つの正規表現は結合可能です。
結果としてできあがる正規表現は、
結合された 2 つの部分表現にそれぞれマッチする
2 つの部分文字列を結合した任意の文字列にマッチします。
2 つの正規表現は中置き型演算子
|
で繋ぐことが可能です。
結果としてできあがる正規表現は、
どちらかの部分表現にマッチする任意の文字列にマッチします。
繰り返しは結合に優先します。また結合は選択に優先します。
これらの優先規則を無効とするために、
部分表現全体を括弧で囲むことが可能です。
n
が 1 つの数字であるような
後方参照
n
は、正規表現中の括弧で囲まれた
n
番目の部分表現がマッチした文字列とマッチします。
基本正規表現では、メタ文字
? ,
+ ,
{ ,
| ,
( ,
)
は、その特殊な意味を失います。代わりに、バックスラッシュを付けた
\? ,
\+ ,
\{ ,
,
,
\)
を使用してください。
伝統的な
egrep
は、メタ文字
{
をサポートしませんでした。また、このメタ文字の代わりに
\{
をサポートする
egrep
実装もいくつか存在するので、移植可能なスクリプトでは、
リテラル
{
にマッチさせるために
egrep
パターンで
{
を使うことは避けて
[{]
を使うべきです。
\s-1GNU\s0
egrep
は、
{
が不正な範囲指定の始まりであるなら特殊文字ではない、と想定して、
伝統的な使用法のサポートを試みます。
例えば、シェルコマンド
egrep '{1'
は正規表現の文法エラーを報告せずに、2 文字の文字列
{1
を検索します。
\s-1POSIX.2\s0 は、この動作を一つの拡張として許可していますが、
移植可能なスクリプトではこの使用法を避けるべきです。
GREP_OPTIONS
LC_ALL, LC_MESSAGES, LANG
LC_ALL, LC_CTYPE, LANG
POSIXLY_CORRECT