Dgrep [ -vmF ] pattern [input-file..]
Dgrep [ - vmF ] [ -e pattern ] .. [ -f pattern-file ] .. [input-file..]
Dgp は Dgrepの短縮形(UNIXのみ)。
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