2 grepの呼び出し
grepは,posix.2とgnuの拡張の,豊富なオプションセット
を持っています.
- `-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
grepがnum個のマッチ行の後で停止したとき,それ以降の行を
出力します.文中にマッチする行がない間は,別のマッチ行に遭遇したときに
grepは停止します.`-c'や`--count'オプションも使用さ
れているとき,grepはnum個以上数えません.`-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バイト(asciiの
NUL
文字)
を出力します.例えば,`grep -lZ'は,それぞれのファイル名の後,通常
の改行の代わりに,0バイトを出力します.このオプションは,ファイル名が改
行のような普通でない文字を含む場合でも出力を曖昧にしません.このオプショ
ンは,改行文字を含むような任意のファイル名を処理するとき使用する,
`find -print0',`perl -0',`sort -z'と`xargs -0'のよ
うなコマンドとともに使用されます.
- `-z'
- `--null-data'
-
それぞれの行は,改行の代わりに0バイト(asciiの
NUL
文字)で終端
され,入力を1行として扱います.`-Z'や`--null'オプションのよう
に,このオプションは,任意のファイル名を処理する際の`sort -z'のよう
なコマンドとともに使用されます.
grepマッチエンジンの変形を使用するかどうかを制御する,追加のオ
プションもあります.See Grep Programs.
2.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
-
これらの変数は
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'の場合,grepのi番目
のオペランドは,明らかにそうであってもオプションと考えません.シェルは,
実行するそれぞれのコマンドに対し,この変数を環境に置くことができ,それを
指定すると,オペランドはワイルドカードを展開したファイル名の結果となり,
そのため,オプションとして扱われません.この動作は,gnuCライブラリ
のみで,
POSIXLY_CORRECT
が設定されていないときのみ利用可能です.