CXTRA 正規検索で文字列を抽出する

書法

CXTRA pattern [filename]* [option]*

SHELLMODE

@記述、!記述、#記述

詳細

ファイルから正規検索で文字列を抽出し出力する。
ファイルを複数指定すると、順次処理し、連結して出力する。 ファイル名を省略すると標準入力に対して処理を行う。

検索パターン

正規検索そのものに付いては別途資料を参照すること。 検索は行単位で行う。

検索パターンの記述

検索パターンは以下の3種類の方法で記述できる。
  1. 第一パラメータ
    検索パターンが一つの場合は、通常この方法で記述する。 第一パラメータが空文字列の場合は無効となる。
    検索パターンの先頭に#!@がある場合は、 次の-Mオプションを用いるか、 あるいは、パターンの先頭にダミーの\/を置くと良い。
  2. オプション(-M
    直接コマンドラインにパターンを書ける。このオプションを複数書くことが出来る。
  3. オプション(-P
    ファイルから検索パターンを読み込む。ファイルの1行が一つのパターンに相当する。
    行が空行ならばその行は無視する。

複数の条件を記述した場合は、OR検索検索が出来る。 検定は条件の登場順に行い、条件が成立した時点で成立とする。 部分文字列の切り出しなどは最初に一致した条件に従って行う。

条件の数は最大4096件まで指定が可能である。

その他の指定

  1. 検索の際の大文字小文字の区別をしない指定ができる(-I)。 また、メタ文字?の扱いを変更するバウンダリモードの指定ができる(-B)。
  2. 一致した文字列の替わりに部分文字列の出力を指定できる(-R)。 また、出力行を細かく指定して組み立てることができる(-E)。
  3. 出力行に行番号やファイル名を付加できる(-F,-G)。
  4. 文脈モードの出力を指定できる(-A,-AA)。 文脈モードでは、入力行の一致部分に、抽出文字列を埋め込んで出力する。 抽出文字列の指定がデフォルトあるいは部分文字列(-R)であった場合は、 それを明示するためにその両側を【】で囲んで出力する。 -Eオプションで抽出文字列の指定がされた場合はその文字列がそのまま埋め込まれる。
    -A指定では、一致のある行のみを出力。-AAではすべての行が出力される。 特に、-AAモードは実質的な文字列置換機能となる。
  5. ファイル単位での一致数を出力する指定がある(-C)。 また、全体での一致数を出力する指定がある(-T)。これらの指定をすると、指定以外の出力は行わない。

OPTION

-A
文脈モードを指定する。一致のある入力行に抽出文字列を埋め込んで出力する。
-AA
文脈モードを指定する。一致のある入力行に抽出文字列を埋め込んで出力する。 一致の無かった入力行はそのまま出力する。
-B
検索パターンをバウンダリモードで解釈する。
この指定をすると検索パターン中のメタ文字の意味付けが変わる。 直前の文字1個または、行頭、行末で一致するようになる。
-C[N]
ファイル毎にパターンの含まれる行数を出力する。
-CN パターンが一つ以上あるファイルのみ出力
-Estr
抽出データ行をstrとして出力する

形式指定文字列記述

全ての制御コードは出力しない。 制御コード以外の文字は以下にあげる文字を除いてそのまま出力される。

\\<\>自身
\a制御文字 BELL(07h)
\b制御文字 BS(08h)
\e制御文字 ESC(1Bh)
\f制御文字 FF(0Ch)
\n制御文字 CRLF(0Dh,0Ah)
\r制御文字 出力しない
\t制御文字 TAB(09h)
\v制御文字 HM(0Bh)
\hnn1バイトコード
\xnnnn2バイトコード(JIS)
\I入力文字列の全体
\0一致文字列の全体
\1-\9部分文字列
\=nn;部分文字列
\Nファイル内行番号
-Zが指定されている場合は、 一致文字列の先頭がある行番号。
\L出力データ相対番号
\Fファイル名
\[一致文字列の前まで
\]一致文字列の後
\/n,m/指定番号の位置マークの間の文字列。 n省略では一致文字列の先頭、 m省略では一致文字列の末尾.
\(tsexpr)tsexprの結果。
sys関数は以下の機能を持つ
sys(0) ファイル名
sys(1) ファイル内行番号
sys(2) 出力データ相対番号
sys(-1 .. -99)部分文字列
sys(10)一致文字列
sys(20)入力文字列の全体
-F
抽出データ行にファイル名、行番号をつける
-G
抽出データ行に行番号をつける
-I
半角の大文字と小文字の区別をしない
-IF
半角、全角の大文字と小文字を区別しない
-Mpattern
検索のパターンを追加指定する。複数の記述が可能である。
指定したパターンのうち、一つでも成立すれば条件成立とみなす。
-Ofilename
指定のファイルへ出力を切り替える
-Pfilename
検索パターンをファイルで指定する。 1行が一つのパターンに相当し、空行は無視する。
-Rn
一致文字列の代わりに、部分文字列を出力する。nは部分文字列の番号
-T
全体を通してパターンの含まれる個数を出力する
-W[0n|n]
埋めこみ行番号の出力形式を指定する。デフォルトは-W
-W 自由形式 -W→「123」
-Wn 固定幅スペース埋めこみ -W5→「  123」
-W0n 固定幅0埋めこみ -W05→「00123」
-Y[位置番号]
再検索の基点を\/で指定した位置にする。 位置番号は1から9で、\/が現れる順番。 位置番号を省略するとデフォルトの一致文字列の終わりから次の検索を行う。
-Z
ファイル全体を読みこんで1行として扱う。 ファイル内の行末は\nで参照する。 ファイル末に行末が無い場合は読み込みのときに行末を付加する。 このオプションを指定すると、-F-Gで出力する 行番号は正しくない。-Eで出力する行番号は正しい。

用例

参考

正規検索正規検索記述
LXTRA行の正規検索

バージョン

Ver 1.00初版