CLI ストリング検索の使用
コマンド出力のパターンはストリングと呼ばれます。CLI ストリング検索機能を使用すれば、 show または more コマンド出力の検索およびフィルタリングを行うことができます。また、--More-- プロンプトで検索およびフィルタリングを行うことができます。この機能は、大量の出力をソートする必要がある場合や、出力から不要な情報を除外する場合に役立ちます。
検索機能を使用すれば、フィルタリングされていない出力で、指定された正規表現を含むものを最初の行から始めることができます。コマンド 1 つあたり、最大 1 つのフィルタを指定できます。または --More-- プロンプトから新しい検索を開始できます。
正規表現は、ソフトウェアが show または more コマンド出力のマッチングを行うために使うパターン(句、番号、またはより複雑なパターン)です。正規表現は、大文字と小文字を区別し、複雑な一致要件を可能にします。単純な正規表現の例は、Serial、misses、138 などです。複合正規表現の例は、00210...、(is)、[Oo]utput などです。
3 種類のフィルタリングを行うことができます。
• 指定した正規表現を含む行で出力を始めるには、 begin キーワードを使用します。
• 指定した正規表現を含む出力行を含めるには、 include キーワードを使用します。
• 指定した正規表現を含む出力行を除外するには、 exclude キーワードを使用します。
次に、このフィルタリングされた出力を --More-- プロンプトで検索できます。
(注) CLI ストリング検索機能を使用しても、以前の出力へ逆方向に検索またはフィルタリングできません。フィルタリングは、CLI への HTTP アクセスで指定できません。
正規表現
正規表現は、コマンド出力内の同じ 1 つの文字に一致する 1 つの文字でもかまいませんし、コマンド出力内の同じ複数の文字に一致する複数の文字でもかまいません。このセクションでは、単一文字パターンおよび複数文字パターンを作成する方法、および繰り返し指定、選択、位置指定、およびカッコを用いたより複雑な正規表現を作成する方法について説明します。
単一文字パターン
最も単純な正規表現は、コマンド出力の同じ 1 つの文字と一致する単一文字です。単一文字パターンとしては任意の文字(A ~ Z、a ~ z)または数字(0 ~ 9)を使用できます。他のキーボード文字(! や ~ など)も単一文字パターンとして使用できますが、正規表現として用いられた場合に特別な意味を持つキーボード文字もあります。 表 1-4 に特別な意味を持つキーボード文字を一覧表示します。
表 1-4 特別の意味を持つ文字
|
|
. |
スペースを含む任意の単一文字と一致します。 |
* |
0 個または複数のパターンのシーケンスに一致します。 |
+ |
1 個または複数のパターンのシーケンスに一致します。 |
? |
0 または 1 回のパターンと一致します。 |
^ |
ストリングの最初と一致します。 |
$ |
ストリングの最後と一致します。 |
_(アンダースコア) |
カンマ(,)、左波カッコ({)、右波カッコ(})、左カッコ(( )、右カッコ())、ストリングの最初、ストリングの最後、またはスペースと一致します。 |
これらの特殊文字を単一文字パターンとして入力する場合は、各文字の前にバックスラッシュ(\)を置いて特別の意味を持たないようにしてください。次の例は、それぞれドル記号、アンダースコア、プラス記号に一致する単一文字パターンです。
\$ \_ \+
一連の単一文字パターンを指定して、コマンド出力とのマッチングを行うことができます。たとえば、a、e、i、o、u のうちの 1 つを含むストリングに一致する正規表現を作成できます。パターン マッチングが成功するには、これらの文字のうちの 1 つだけがストリングに存在しなくてはなりません。一連の単一文字パターンを指定するには、単一文字パターンを角カッコ([ ])で囲みます。 たとえば、
[aeiou]
小文字アルファベットの 5 つの母音のうちの任意の 1 文字と一致します。
[abcdABCD]
小文字または大文字アルファベットの最初の 4 文字のうち、任意の 1 文字と一致します。
ダッシュ(-)で区切って範囲の終点だけを入力することにより、範囲を簡略化できます。上記の範囲は次のように簡略化できます。
[a-dA-D]
範囲に単一文字パターンとしてダッシュを追加する場合は、もう 1 つダッシュを追加して、その前にバックスラッシュを入力します。
[a-dA-D\-]
範囲に単一文字パターンとして右角カッコ(])を含めることもできます。次のように入力してください。
[a-dA-D\-\]]
上記の例は、大文字または小文字のアルファベットの最初の 4 文字のうち、任意の 1 文字、ダッシュ、または右角カッコに一致します。
範囲の最初にカレット(^)を含めることにより、範囲の一致を逆にできます。次の例では、列挙された文字以外の任意の文字に一致します。
[^a-dqsv]
次の例では、右角カッコ(])または d という文字以外の任意の文字に一致します。
[^\]d]
複数文字パターン
正規表現を作成する場合、複数の文字を含むパターンを指定することもできます。文字、数字、または特別の意味を持たないキーボード文字を組み合わせて複数文字パターン正規表現を作成できます。たとえば、a4% は複数文字正規表現です。特別な意味を持つキーボード文字に、その特別な意味を持たせないようにする場合には、キーボード文字の前にバックスラッシュを入力します。
複数文字パターンでは、順序が大切です。正規表現 a4% は、a という文字のあとに 4 が続き、そのあとに % 記号が続く文字と一致します。ストリングに a4% という文字がその順序で含まれていない場合、パターン マッチングは失敗となります。この複数文字正規表現において、
a.
は、ピリオド文字の特別な意味を使用し、a という文字のあとに任意の文字が1つ来るストリングと一致します。この例では、ab、a!、または a2 というストリングはすべてこの正規表現での有効な一致となります。
ピリオド文字の前にバックスラッシュを入力することにより、ピリオド文字に特別な意味を持たせないようにできます。次の表現では、
a\.
というストリングだけが、この正規表現に一致します。
すべての文字、すべての数字、すべてのキーボード文字、または文字、数字、および他のキーボード文字の組み合わせを含む、複数文字正規表現を作成できます。次の例はすべて有効な正規表現です。
telebit 3107 v32bis
繰り返し指定
ある特殊文字を単一および複数文字パターンとともに使用することにより、指定された正規表現の繰り返しと一致する複雑な正規表現を作成できます。 表 1-5 に、正規表現の「繰り返し」を指定する特殊文字を一覧表示します。
表 1-5 繰り返し指定として使用される特殊文字
|
|
* |
0 個以上の単一または複数文字パターンに一致します。 |
+ |
1 つ以上の単一または複数文字パターンに一致します。 |
? |
単一または複数文字パターンの 0 回または 1 回の繰り返しに一致します。 |
次の例は、a という文字の任意の回数(0 を含む)に一致します。
a*
次のパターンでは、ストリング内で最低 1 つの a という文字が一致している必要があります。
a+
次のパターンでは、ストリング bb または bab に一致します。
ba?b
次のストリングでは、任意の数のアスタリスク(*)に一致します。
\**
複数文字パターンで繰り返し指定を使用する場合は、パターンをカッコで囲みます。次の例では、パターンは任意の数の複数文字ストリング ab に一致します。
(ab)*
より複雑な例として、次のパターンは、1 つまたは複数の英数字ペアに一致します(ただし、0、つまり空ストリングには一致しません)。
([A-Za-z][0-9])+
繰り返し指定(*、+、または ?)を使用している一致の記述順序では、最も長い構造から先に一致します。ネストされた構造でのマッチングは外側から内側へ行われます。連結構造では、構造の左側からマッチングされます。この正規表現は番号の前に文字が指定されるため、A9b3 には一致しますが、9Ab3 には一致しません。
選択
選択を使用すると、ストリングとのマッチングに選択パターンを指定できます。選択パターンは、縦棒(|)で分離します。選択肢のうちの 1 つだけが、ストリングと一致できます。たとえば、正規表現
codex | telebit
は、codex または telebit というストリングと一致させることができますが、codex と telebit の両方とは一致しません。
位置指定
ストリングの最初または最後に対して正規表現パターンのマッチングを行うことができます。つまり、ストリングの最初または最後に固有のパターンが含まれるよう指定できます。 表 1-6 に示す特殊文字を用いたストリングの一部に対して、これらの正規表現の「位置指定」を行います。
表 1-6 位置指定に用いられる特殊文字
|
|
^ |
ストリングの最初と一致します。 |
$ |
ストリングの最後と一致します。 |
次の正規表現がストリングと一致するのは、ストリングが abcd で始まるときだけです。
^abcd
対照的に、次の表現は、a、b、c、d という文字以外のすべての単一文字に一致します。
[^abcd]
次の例では、正規表現は .12 で終わるストリングと一致します。
$\.12
これらの位置指定文字を特殊文字アンダースコア(_)と対比させてください。アンダースコアは、ストリングの始め(^)、ストリングの終わり($)、カッコ()、スペース()、波カッコ({ })、カンマ(,)、またはアンダースコア(_)と一致します。アンダースコア文字を使用した場合、パターンはストリングのどの位置に存在していてもかまわないという指定になります。
たとえば、
_1300_
は、ストリング内の任意の位置に 1300 が含まれるストリングに一致します。ストリングの 1300 の前後にスペース、波カッコ、カンマ、またはアンダースコアを置くことができます。たとえば、
{1300_
は、正規表現に一致しますが、21300 および 13000 は一致しません。
アンダースコア文字を用いれば、
^1300$ ^1300(space) (space)1300 {1300 ,1300, {1300} ,1300, (1300
のような長い正規表現リストを以下に置き換えることができます。
_1300_
リコール機能用カッコ
「繰り返し指定」に示すように、カッコを複数文字正規表現とともに使用して、パターンを繰り返すことができます。また、単一文字パターンまたは複数文字パターンを囲むカッコを使用して、正規表現の他の場所で使用するパターンを記憶させることができます。
以前のパターンをリコールするための正規表現を作成するには、リコールする特定のパターンを示すカッコ、バックスラッシュ(\)、整数という順序で入力します。これにより、記憶されたパターンを再び使用できます。整数は、正規表現パターン内のカッコの繰り返し数を示します。正規表現内に複数のリコールパターンがある場合、\1 は最初のリコールパターン、\2 は 2 番めのリコールパターン、というようになります。
次の正規表現は、リコール機能用カッコを使用します。
a(.)bc(.)\1\2
この正規表現は、a のあとに任意の文字が来て(文字 1 と呼ぶ)、その次に bc が来て、その次に任意の文字(文字 2 と呼ぶ)が来て、その次に再び文字 1 が来て、その次に再び文字 2 が来るストリングと一致します。この正規表現は aZbcTZT と一致します。ソフトウェアは、文字 1 が Z で文字 2 が T で、正規表現のあとに再び Z および T が使用されることを記憶します。