Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)

nismatchnisgrep コマンド

nismatch コマンドと nisgrep コマンドは、NIS+ テーブルを検索して、それぞれ特定の文字列または正規表現に一致するエントリを探します。これらのコマンドは、エントリ自体、またはエントリの検索できた回数のどちらかを表示します。nismatch コマンドと nisgrep コマンドの相違を表 19–6 に示します。

表 19–6 nismatchnisgrep の 比較

機能 

nismatch 

nisgrep

検索指定 

テキストのみ指定可能 

正規表現が指定可能 

速度 

高速 

低速 

検索対象 

検索可能列のみ 

すべての列 (検索可能かどうかとは無関係) 

検索構文 

column=string ... tablename[ column= string,...], tablename

column=exp ... tablename

この節の例では、両方のコマンドの構文を説明します。

どちらのコマンドを使用する場合にも、検索するテーブルに対する読み取りアクセス権が必要です。

この節の例は、次に示す depts.doc.com. というテーブルの値をベースにしています。最初の 2 つの列だけが検索可能です。

Name (S) 

Site (S) 

Name 

R&D 

SanFran 

kuznetsov 

Sales 

SanFran 

jhill 

Manf-1 

Emeryville 

hosteen 

Manf-2 

Sausalito 

lincoln 

Shipping-1 

Emeryville 

tsosulu 

Shipping-2 

Sausalito 

katabami 

Service 

Sparks 

franklin 

正規表現について

正規表現により、テキストと記号を組み合わせて使用し、特定の構成の列の値を検索できます。たとえば、正規表現 `Hello' は、Hello で始まる値を検索します。正規表現をコマンド行で使用するときは、必ず引用符で囲んでください。その理由は、正規表現記号の多くが Bourne シェルと C シェルでは特殊な意味をもつからです。たとえば、以下のようになります。


rootmaster% nisgrep -h greeting='Hello' phrases.doc.com.

正規表現の記号を表 19–7 にまとめます。

表 19–7 正規表現記号

記号 

説明 

^string

string で始まる値を見つける

string $

string で終わる値を見つける

ピリオドの数と等しい数の文字をもつ値を見つける 

[chars]

角かっこ内の文字のどれかを含む値を見つける 

*expr

expr についてゼロ回以上一致する値を見つける

+

1 回以上現われるものを見つける 

?

任意の値を見つける 

\'s-char'

? や $ などの特殊文字を見つける  

x | y

x または y の値を見つける

nismatchnisgrep コマンドの構文

最初の列を検索するには、以下のように入力します。


nismatch string tablename  
nisgrep reg-exp tablename

特定の列を検索するには、以下のように入力します。


nismatch column=string tablename
nisgrep column=reg-exp tablename 

複数の列を検索するには、以下のように入力します。


nismatch column=string tablename ...\
nismatch [column=string,...],tablename
nisgrep column=reg-exp ... \
   tablename
表 19–8 nismatch 構文と nisgrep 構文のオプション

オプション 

目的 

-c

カウント。エントリ自体ではなく、検索指定に一致したエントリのカウントを表示する 

-h

ヘッダー。エントリの上のヘッダー行を表示し、各列名を表示する 

-M

マスター。マスターサーバーに収められているテーブルのエントリだけを表示する。これによって、最新情報を取得できる。デバッグにだけ使うようにする 

最初の列を検索する

テーブルの最初の列で特定の値を検索するには、最初の列の値と「tablename」を入力します。nismatch では、この値は文字列でなければなりません。nisgrep では、この値は正規表現でなければなりません。


nismatch [-h] string tablename
nisgrep [-h] reg-expression tablename

次の例では、depts テーブルを検索して、最初の列の値が R&D となっているすべてのエントリを探します。


rootmaster% nismatch -h `R&D' depts.doc.com.
rootmaster% nisgrep -h `R&D' depts.doc.com.

注 –

& がシェルによってメタキャラクタとして解釈されないように、R&D が引用符で囲まれています。


特定の列を検索する

最初の列以外の特定の列を検索するには、次の構文を使います。


nismatch column=string tablename
nisgrep column=reg-expression tablename

次の例では、depts テーブルを検索して、第 2 列の値が SanFran となっているすべてのエントリを探します。


rootmaster% nismatch -h Site=SanFran depts.doc.com.
rootmaster% nisgrep -h Site=SanFran depts.doc.com.

複数の列を検索する

2 つ以上の列で一致するエントリを検索するには、次の構文を使います。


nismatch [-h] [column=string, ... \
 column=string,...],tablename
nisgrep [-h] column=reg-exp ... \
 tablename

以下の例では、第 2 列の値が SanFran で、第 3 列の値が jhill のエントリを検索します。


rootmaster% nismatch -h [Site=SanFran,Name=jhill], depts.doc.com.
rootmaster% nisgrep -h Site=SanFran Name=jhill depts.doc.com.