[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2. grepの呼び出し

grepは,POSIX.2GNUの拡張の,豊富なオプションセット を持っています.

-c
--count

標準的な出力を抑制します.代わりに,それぞれの入力ファイルに対し,マッチ した行数を出力します.‘-v’,‘--revert-match’オプションと併用し た場合,マッチしない行を数えます.

-e pattern
--regexp=pattern

patternをパターンとして使います.‘-’で始まるパターンの保護に 役立ちます.

-f file
--file=file

1行毎に,fileからパターンを得ます.空のファイルは,0個のパターン を含むので,何にもマッチしません.

-i
--ignore-case

パターンと入力ファイルの両方で,大文字小文字の違いを無視します.

-l
--files-with-matches

標準的な出力を抑制します.通常出力されている,それぞれの入力ファイルの名 前を代わりに出力します.全てのファイルの走査は,最初にマッチすると停止し ます.

-n
--line-number

入力ファイルの行番号を,それぞれの出力行に前置します.

-o
--only-matching

patternにマッチした行のマッチした部分のみ出力します.

-q
--quiet
--silent

静かを意味します.標準出力に何も書き出しません.エラーが検出されていても, マッチが見つかった場合,ゼロのステータスですぐに終了します.‘-s’や ‘--no-messages’オプションも参照してください.

-s
--no-messages

存在しない,あるいは読み込みできないファイルについての,エラーメッセージ を抑制します.移植性のメモ: 伝統的なgrepは,‘-q’オプショ ンが無く,‘-s’オプションは,GNU grepの‘-q’オプ ションのように動作するので,伝統的なgrepは,GNU grepと異なり,POSIX.2準拠ではありません.伝統的な grepとの移植性を考慮するシェルスクリプトは,‘-q’と ‘-s’を避け,代わりに‘/dev/null’に,出力をリダイレクトするべき です.

-v
--invert-match

マッチするという意味を反転し,マッチしない行を選択します.

-x
--line-regexp

正確に行全体がマッチしたもののみを選択します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.1 GNUの拡張

-A num
--after-context=num

マッチした行の後に,後ろの文脈をnum行出力します.

-B num
--before-context=num

マッチした行の前に,前の文脈をnum行出力します.

-C num
--context=num

出力文脈の前後の行を出力します.

--colour[=WHEN]
--color[=WHEN]

GREP_COLORで指定されているマーカーで,マッチした文字を囲みます. WHENは,‘never’,‘always’,または‘auto’が利用できます.

-num

--context=num’と同様に,前後の行を出力します.しかし, grepは,与えられた行を,一度以上出力しません.

-V
--version

grepのバージョンナンバーを標準出力に出力します.このバージョン ナンバーをすべてのバグレポートに含めてください.

--help

これらのコマンドラインオプションの概要の簡単な使用法メッセージと,バグレ ポートのアドレスを出力して終了します.

--binary-files=type

ファイルの最初の数バイトで,ファイルがバイナリデータを含むことを示してい る場合,ファイルの形式がtypeであると考えます.デフォルトで, typeは‘binary’で,grepは通常,バイナリファイルがマッ チしたことを告げる1行のメッセージの出力する,または,マッチしない場合は なにもメッセージを出力しないのどちらかです.typeが ‘without-match’の場合,grepはバイナリファイルはマッチしな いと考えます.これは‘-I’オプションと同じです.typeが ‘text’ の場合,grepはバイナリファイルをテキストであるかの ように処理します.これは‘-a’オプションと同じです.警告:--binary-files=text’は,端末に出力されるバイナリのゴミを出力する可 能性があり,出力が端末で,且つ端末ドライバがそれをコマンドとして解釈した 場合,それは厄介な副作用となるはずです.

-b
--byte-offset

それぞれの出力行の前に,入力ファイルのバイトオフセットを出力します. MS-DOSやMS-Windowsでgrepを実行するときは, ‘-u’(‘--unix-byte-offsets’)オプションが使われているかどうかに 依存して,バイトオフセットを出力します.以下を参照してください.

-D action
--devices=action

入力ファイルがデバイス,FIFO,またはソケットの場合,それを処理するために actionを使用します.デフォルトでactionは‘read’で,それ はデバイスが通常のファイルのように読み込まれることを意味します. actionが‘skip’の場合,デバイス,FIFO,そしてソケットは何事も なく飛ばされされます.

-d action
--directories=action

入力ファイルがディレクトリの場合,それを処理するために,actionを使 用します.デフォルトでactionは‘read’で,それは,ディレクトリ が普通のファイルであるかのように読まれることを意味します(オペレーティン グシステムとファイルシステムによってはこれができないものもあり, grepは全てのディレクトリに対しエラーメッセージを出力したり,そ れらを何事もなく飛ばしたりします).actionが‘skip’の場合,ディ レクトリは何事もなく飛ばされます.actionが‘recurse’の場合, grepはそれぞれのディレクトリ下の全てのファイルを再帰的に読み込 みます.これは,‘-r’オプションと同じです.

-H
--with-filename

それぞれのマッチに対し,ファイル名を出力します.

-h
--no-filename

複数のファイルが検索されているとき,出力の前のファイル名を抑制します.

--line-buffered

ラインバッファリングのポリシーを設定します.動作速度にペナルティーが課せ られるはずです.

--label=LABEL

標準入力から来た実際の入力を,ファイルLABELからの入力のように表示 します.例えばgzip -cd foo.gz |grep --label=foo somethingのよ うな,zgrepツールに対して,これは特に役に立ちます.

-L
--files-without-match

標準的な出力を抑制します.通常,出力されないそれぞれの入力ファイル名 (1)を,代わりに出 力します.全てのファイルのスキャンは,最初にマッチすると停止します.

-a
--text

バイナリファイルをテキストファイルであるかのように処理します.これは, ‘--binary-files=text’オプションと同じです.

-I

バイナリファイルを,マッチデータを含まないものとして処理します.これは ‘--binary-files=without-match’オプションと同じです.

-w
--word-regexp

単語全体がマッチしているものを含む行のみを選択します.マッチしているサブ 文字列が,行の最初,または,単語を構成しない文字が前にあるかのどうかを調 べます.同様に,行の最後,または,単語を構成しない文字が後に続くかどうか を調べます.単語を構成する文字は,文字,数字と,アンダースコアです.

-r
-R
--recursive

コマンド行にあるそれぞれのディレクトリに対し,そのディレクトリの全てのファ イルを再帰的に読み込み処理します.これは,‘--directories=recurse’オ プションと同じです.

--include=file_pattern

ディレクトリを再帰的に処理しているとき,file_patternにマッチしたファ イルのみ検索します.

--exclude=file_pattern

ディレクトリを再帰的に処理しているとき,file_patternにマッチしたファ イルを飛ばします.

-m num
--max-count=num

num個のマッチした行以降の読み込みを停止します.入力が通常のファイ ルからの標準入力で,num個のマッチした行が出力された場合, grepは,それ以降に行が存在していても,既存のマッチ行の最後以降 に標準入力を確実に配置します.これで,検索の概要を処理が呼び出し可能にな ります.例えば,以下のシェルスクリプトでそれを利用してみます.

 
while grep -m 1 PATTERN
do
  echo xxxx
done < FILE

しかし,以下のものはパイプが通常ファイルではないので動作しません.

 
# This probably will not work.
cat FILE |
while grep -m 1 PATTERN
do
  echo xxxx
done

grepnum個のマッチ行の後で停止したとき,それ以降の行を 出力します.文中にマッチする行がない間は,別のマッチ行に遭遇したときに grepは停止します.‘-c’や‘--count’オプションも使用さ れているとき,grepnum個以上数えません.‘-v’や ‘--invert-match’オプションも使用されているとき,num個のマッチ しない行を出力した後で停止します.

-y

-i’に対する時代遅れの同義語です.

-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 文字を無視します.これは,Unixマシンでgrepを実行するのと同じ結 果を生成します.このオプションは,‘-b’オプションと一緒に使用しない 限り効果がありません.MS-DOSとMS-Windows以外のプラットホームでは効 果がありません.

--mmap

可能な場合,入力を読む際,デフォルトのreadシステムコールの代わり に,mmapシステムコールを使用します.‘--mmap’が,良いパフォー マンスを与える場合もあります.しかし,grep処理中に入力ファイル が小さくなる場合や,I/Oエラーが生じた場合,‘--mmap’は,(coreの吐き 出しを含め)未定義の動作をすることもあります.

-Z
--null

通常ファイル名に続く文字の代わりに,0バイト(ASCIINUL文字) を出力します.例えば,‘grep -lZ’は,それぞれのファイル名の後,通常 の改行の代わりに,0バイトを出力します.このオプションは,ファイル名が改 行のような普通でない文字を含む場合でも出力を曖昧にしません.このオプショ ンは,改行文字を含むような任意のファイル名を処理するとき使用する, ‘find -print0’,‘perl -0’,‘sort -z’と‘xargs -0’のよ うなコマンドとともに使用されます.

-z
--null-data

それぞれの行は,改行の代わりに0バイト(ASCIINUL文字)で終端 され,入力を1行として扱います.‘-Z’や‘--null’オプションのよう に,このオプションは,任意のファイル名を処理する際の‘sort -z’のよう なコマンドとともに使用されます.

grepマッチエンジンの変形を使用するかどうかを制御する,追加のオ プションもあります.See section grepプログラム.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.2 環境変数

grepの動作は,以下の環境変数に影響されます.

ロケールLC_fooは,3つの環境変数LC_ALLLC_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

これらの変数はLC_COLLATEロケールを指定し,それは‘[a-z]’のよ うな範囲表現を解釈するために使用される,照合の手続きを決定します.

LC_ALL
LC_CTYPE
LANG

これらの変数はLC_CTYPEロケールを指定し,それは例えば,どの文字が 空白となるかといった,文字の型を決定します.

LC_ALL
LC_MESSAGES
LANG

これらの変数はLC_MESSAGESロケールを指定し,それは,grep がメッセージで使用する言語を決定します.デフォルトのCロケールでは,アメ リカ英語のメッセージを使用します.

POSIXLY_CORRECT

設定されている場合,grepは,POSIX.2で要求されているように 動作します.そうでない場合,grepは,他のGNUプログラムのよ うに動作します.POSIX.2は,ファイル名が続くオプションは,ファイル名 として扱う必要があると要求します.デフォルトで,そのようなオプションは, オペランドリストの前に順序を変え,オプションとして扱われます.また, POSIX.2は,理解できなかったオプションを「不正」と診断することも要求 しますが,本当に規則に反しているわけではないので,デフォルトでは「無効」 と診断されます.POSIXLY_CORRECTは,以下で述べる _N_GNU_nonoption_argv_flags_も使用できないようにします.

_N_GNU_nonoption_argv_flags_

(ここで,Nは,grepのプロセスID番号です.)この環境 変数の値のi番目の文字が‘1’の場合,grepi番目 のオペランドは,明らかにそうであってもオプションと考えません.シェルは, 実行するそれぞれのコマンドに対し,この変数を環境に置くことができ,それを 指定すると,オペランドはワイルドカードを展開したファイル名の結果となり, そのため,オプションとして扱われません.この動作は,GNUCライブラリ のみで,POSIXLY_CORRECTが設定されていないときのみ利用可能です.


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は新堂 安孝によって2009年9月22日texi2html 1.82を用いて生成されました。