Dgrep - 正規表現での検索

[ 英語 | 日本語 ]

[Dホームページへ]

形式

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つの文字列として これとパターンとのマッチングをとる。 したがって,"^"はフィールド名の先頭,"$"は値の終端にマッチする。 パターンがあるレコードの少なくとも一つのフィールドに マッチすれば,そのレコードを選択する。 オプション -fpattern-file に複数行がある場合,各行を独立のパターンとして取り扱う。

複数行マッチングの場合, 各パターンをレコード全体とマッチする。 この場合,各フィールドを分離している改行制御文字も含めて 一つの文字列として扱う。 したがって,"^"はレコードの先頭 (最初のフィールドのフィールド名の先頭), "$"はレコードの終端 (最後のフィールドの後ろの改行制御文字の後)にマッチする。 パターン中の改行制御文字は通常の文字と同様に扱い, Dレコードのフィールド終端の改行制御文字にマッチする。

複数行マッチのとき, pattern-fileから読み込まれたパターンは, 行末の改行制御文字を含んで 全体として一つのパターンとなる。 シェルから引数として改行制御文字を含むパターンを与えるのは 面倒が多いため,この方法が勧められる。

オプション

-m
複数行マッチモード。
-v
アンマッチレコードの選択。 複数パターンが指定されている場合, 少なくとも一つのパターンにマッチしないレコードは選択される。
-F
"filename"フィールドを各出力レコードに付加する。 値は,シェルから渡された入力ファイル名である。 入力ファイルが標準入力の場合このフィールドは付加されない。
-e pattern
パターンを指定する。このオプションは繰り返し指定できる。
-f pattern-file
指定のファイルからパターンを読み込む。 このオプションは繰り返し指定できる。
-D [i/o]datautf=8|16|32
UTF入出力機能参照。

既定フィールド名

filename:
オプション -Fが指定されたとき,各レコードの先頭。

環境変数

Ddatautf, Didatautf, Dodatautf
UTF入出力機能参照。

使用例

文字列"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参照。

参照

DintroDselectD_msg

AUTHOR

MIYAZAWA Akira


miyazawa@nii.ac.jp
2003