GREP
Section: User Commands (1)
Updated: 1992 September 10
Index
JM Home Page
roff page
名称
grep, egrep, fgrep - パターンにマッチする行を表示する
書式
grep
[
-[[AB] ]num
]
[
-[CEFGVBchilnsvwx]
]
[
-e
]
pattern
|
-ffile
] [
files...
]
解説
grep
は、
files
が指定されていればそのファイルから、ファイルが指定されて
ないか
files
の部分に
-
が指定された場合は、標準入力を読み込み、行毎に、
指定したパターンにマッチする部分を含んでいるかどうか調べ、デフォルト動
作では、マッチした行を表示します。
grep
は、次のオプションにより大きく 3 つの動作に分かれます。
- -G
-
パターンとして、基本的な正規表現を扱うモード。デフォルトです。
- -E
-
拡張された正規表現を扱うモードです。ただし、本 grep は、基本の正
規表現と、拡張の正規表現には、表記上の違いはありますが、機能的には差は
ありません。
- -F
-
パターンとして改行で区切られた固定の文字列パターンのリストを扱
うモードです。
egrep
と
fgrep
は、grep にリンクを張ったもので、実体は grep です。grep を egrep
の名前で起動した時の動作は、
grep -E
とほぼ同じです。ただし、古い UNIX の
egrep
との互換のため、完全に同じではあ
りません。
grep
を
fgrep
の名前で起動した場合は、
grep -F
と同じです。
その他のオプションは以下のものがあります。
- -num
-
num
で指定した行数だけ、パターンにマッチした行の前後の行もそれぞれ表示します。
- -A num
-
num
で指定した行数だけ、パターンにマッチした行の後の行も表示します。
- -B num
-
num
で指定した行数だけ、パターンにマッチした行の前の行も表示します。
- -C
-
-2
を指定した事と同じで、パターンにマッチした行の前後 2 行も表示します。
- -V
-
grep のバージョン番号を標準エラー出力に表示します。バグレポート
には、この番号を付記してください。
- -b
-
各行の前に、ファイルの先頭からバイト単位のオフセットを表示します。
-n 各行の前に、行番号を表示します。
- -c
-
各行の表示はせず、マッチした行数だけを表示します。
-v
オプションと共に指定した場合は、マッチしなかった行数の表示となります。
- -e pattern
-
パターンを指定します。パターンの先頭が、
-
で始まっているなど、オプションの指定と混同される可能性がある時に有効です。
通常は、
-e
を省略してパターンを記述する事ができます。
- -f file
-
パターンを
file
から読み込みます。
- -h
-
複数のファイルを指定した場合、デフォルトでは、マッチした行の前
に、ファイル名を付けて表示が行われますが、
-h
を指定した場合は、ファイル名を付けないようにします。
- -i
-
パターンマッチにおいて、英大文字と小文字の区別をしないようにします。
- -l
-
通常の表示を抑止し、代わりに、パターンにマッチしたファイルのファ
イル名を 1 行ずつ表示します。
-v
と共に使用した場合は、マッチしなかったファイル名の表示になります。
- -L
-
通常の表示を抑止し、代わりに、パターンにマッチしなかったファイル名を表示
します。
-lv
と同じです。
- -q
-
通常の表示を抑止します。
- -s
-
指定されたファイルが存在しない場合や、読み込みできなかった時、
デフォルトではエラーメッセージを表示しますが、これを抑止します。
- -v
-
指定されたパターンにマッチしない行を対象にします。
- -w
-
パターンマッチを、単語全体で行うようにします。デフォルトの動
作では、指定されたパターンが行の中のどの部分にマッチしてもかまいません
が、
-w
を指定した場合は、単語単位となります。
単語とは、アルファベット、数字およびア
ンダースコアーからなる文字列で、その前後は、空白など、単語を構成しない
文字や、行頭、行末などで区切られたものです。
そして、行の中の各単語について、単語を構成する文字全てがパター
ンとマッチするかどうか調べます。
- -x
-
パターンマッチを、行全体で行うようにします。
正規表現
grep
は、基本的な正規表現と 古い UNIX の egrep に相当する拡張正規表現の 2 種
類の正規表現を扱う事ができます。ただし、本 grep (GNU プロダクトの grep)
では、どちらの表現も機能的に違いありません。他のインプリメントでは、基
本正規表現は、拡張正規表現より制限があるようになっていますが、本 grep で
は、表記上の違いだけです。ここでは、拡張正規表現について説明し、基本正
規表現との違いはその後に説明します。
正規表現の基本単位は、単一の文字にマッチします。アルファベットや数字な
どの多くの文字は、それ自身にマッチします。また、特殊な意味のある文字も、
バックスラッシュ`\'を付ける事で、その本来の文字にマッチするようになり
ます。
例えば
0
は 0 にマッチし、
\[
は [ にマッチします。
[
と
]
で囲まれた文字のリストは、そのリストの中に含まれる文字のどれか
にとマッチすることができます。ただし、リストの先頭に
^
を書いた場合は、そのリストに含まれ
ない
文字にマッチします。
例えば、
[0123456789]
は数字 1 文字にマッチします。
[^0123456789]
は数字以外の 1 文字にマッチします。
2 つの文字の間に `-' を付けることで、前後 2 つの文字の ASCII キャラクタコー
ドの間にある文字全体を指定することができます。
例えば、
[0-9]
は数字 1 文字にマッチします。
[:クラス名:]で、特定の文字クラスを指定することができます。クラスには、
[:alnum:],
[:alpha:],
[:cntrl:],
[:digit:],
[:graph:],
[:lower:],
[:print:],
[:punct:],
[:space:],
[:upper:],
[:xdigit:]
があります。
例えば、
[[:alnum:]]
は
[0-9A-Za-z]
と同じですが、
[:alnum:]
で指定した方が ASCII コード順に依存しません。
リストの中では、ほとんどの特殊文字は、通常の文字として扱われます。
また、次の文字も、リストの中の位置によっては、通常の文字として扱われます。
- ]
-
リストの先頭にあれば、] にマッチ
- ^
-
リストの先頭以外にあれば、^ にマッチ
- -
-
リストの最後にあれば、- にマッチ
例えば、[][] は ] か [ にマッチします。
次の表現は、特殊な意味があります。
- .
-
任意の 1 文字にマッチ
- \w
-
[[:alnum:]]
と同じで、アルファベットと数字にマッチ
- \W
-
[^[:alnum:]]
と同じで、アルファベットと数字以外にマッチ
- ^
-
行の先頭にマッチ
- $
-
行の最後にマッチ
- \<
-
単語の先頭にマッチ
- \>
-
単語の最後にマッチ
- \b
-
単語の端にマッチ
- \B
-
単語の端
以外
にマッチ
次の表現は、他の正規表現を修飾します。拡張正規表現です。
- ?
-
他の正規表現の後に指定し、0 回か 1 回マッチさせます。マッチしない場
合も一致とします。
- *
-
他の正規表現の後に指定し、0 回以上マッチさせます。マッチしない場合も
一致とします。
- +
-
他の正規表現の後に指定し、その正規表現を 1 回以上マッチさせます。
なお、少なくとも 1 回はマッチしなくてはいけません。
- {n}
-
他の正規表現の後に指定し、厳密に
n
回マッチさせます。
- {n,}
-
他の正規表現の後に指定し、
n
回以上マッチさせます。
- {,m}
-
他の正規表現の後に指定し、
m
回以下でマッチさせます。
- {n,m}
-
他の正規表現の後に指定し、
n
回以上
m
回以下でマッチさせます。
- |
-
2 つの正規表現の間に指定し、どちらか一方がマッチすれば一致とします。
- ()
-
括弧でくくった正規表現をひとまとまりでマッチさせます。繰り返しなどの
修飾は、このまとまりに対しての指定になります。
- \n
-
括弧で括った正規表現のまとまりは、出て来た順番に番号が振られており、
そのうちの
n
番目のものを繰り返します。
例えば、taro|hanako は `taro' か `hanako' にマッチします。
`su(momo)mo\1mo\1nouti' は `sumomomomomomomomonouti' にマッチします
基本正規表現では、
?,
+,
{,
|,
(,
)
は、正規表現としての特殊な意味は
持たず、その文字本来のパターンにマッチします。代わりに、
\?,
\+,
\{,
\|,
\(,
\)
を使う事で、拡張正規表現と同じ機能を持ちまます。
egrep
として起動した場合、
{
は、正規表現としての特殊な意味は持ちません。
戻り値
パターンにマッチした行が見つかった場合は、0 を、見つからなかった場合は、1 を
返します。ただし、
-v
オプションが指定された場合は、逆になります。パターンの指定の仕方が間違って
いたり、ファイルがアクセスできないなどのエラーがおきた場合は、2 を返します。
バグ
バグレポートは、
bug-gnu-utils@prep.ai.mit.edu
まで Email してください。この時、``Subject:'' のどこにでもいいですから
``grep'' という単語を
忘れずに入れてください。
Index
- 名称
-
- 書式
-
- 解説
-
- 正規表現
-
- 戻り値
-
- バグ
-
This document was created by
man2html,
using the manual pages.
Time: 03:26:31 GMT, April 25, 2010