Dgrep [ options ] pattern [ input-file.. ]
Dgrep [ options ] [ -e pattern ].. [ -f pattern-file ].. [ input-file.. ]
Dgrepは,正規表現によるパターンマッチングで Dレコードを選択する。 正規表現パターンは第1引数(上記形式の1) または オプション-e もしくは/およびオプション-f で指定したファイル(上記形式の2)で指定する。 オプション -e および -f のいずれも存在しないとき, 第1引数をパターンとし, 残りの引数を入力ファイルとする。
複数のパターン (-e および -f オプションは複数指定できる。) が指定された場合, すべてのパターンにマッチするレコードが選択される。 (ANDとして扱われる)。
正規表現については,マニュアル Dintro参照。
パターンマッチには2つのモードがある。 通常は1行マッチである。 もう一つは複数行マッチで,オプション -mが指定されたときにこのモードとなる。
1行マッチモードでは,各パターンはDレコードの各フィールド とマッチングする。 各フィールド(フィールド名,COLON,値)を1つの文字列として これとパターンとのマッチングをとる。 したがって,"^"はフィールド名の先頭,"$"は値の終端にマッチする。 パターンがあるレコードの少なくとも一つのフィールドに マッチすれば,そのレコードを選択する。 オプション -fの pattern-file に複数行がある場合,各行を独立のパターンとして取り扱う。
複数行マッチングの場合, 各パターンをレコード全体とマッチする。 この場合,各フィールドを分離している改行制御文字も含めて 一つの文字列として扱う。 したがって,"^"はレコードの先頭 (最初のフィールドのフィールド名の先頭), "$"はレコードの終端 (最後のフィールドの後ろの改行制御文字の後)にマッチする。 パターン中の改行制御文字は通常の文字と同様に扱い, Dレコードのフィールド終端の改行制御文字にマッチする。
複数行マッチのとき, pattern-fileから読み込まれたパターンは, 行末の改行制御文字を含んで 全体として一つのパターンとなる。 シェルから引数として改行制御文字を含むパターンを与えるのは 面倒が多いため,この方法が勧められる。
文字列"foo"がレコードのどこかにあるレコードの選択。
Dgrep foo
レコードのどこかに,文字列"foo"および文字列"bar"のあるレコードの選択。
Dgrep -e foo -e bar
文字列"foo"および文字列"bar"をこの順に含むレコードの選択。
Dgrep -m "foo.*bar"
フィールド順が"a","b","c"でないレコードの選択。
Dgrep -vm -f foo
ファイル"foo"の内容:
^a:[^
]*
b:[^
]*
c:[^
] $
マニュアル D_msg参照。
MIYAZAWA Akira