LEXTRA 行を正規検索する

書法

LEXTRA pattern [filename]* [option]*

SHELLMODE

@記述、!記述、#記述

詳細

行を正規検索し、一致した行を出力する
ファイルを複数指定すると、それらを順次処理する。 ファイル名を省略すると標準入力を処理する。

LEXTRA.EXE は従来からある LXTRA.EXE と同様の機能を持ち、モダンな正規検索表記を用いる。

検索パターン

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

検索パターンの記述

検索パターンは以下の4種類の方法で記述できる。
  1. 第一パラメータ
    検索パターンが一つの場合は、通常この方法で記述する。 検索パターンの先頭に #!@ がある場合は、 次の -M オプションを用いるか、 あるいは、パターンの先頭にダミーの \: を置くと良い。
  2. オプション(-M
    直接コマンドラインにパターンを書ける。このオプションを複数書くことが出来る。 第一パラメータが空文字列("")の場合は、第一パラメータを無視する。 そうでないときは、第一パラメータが最初のパターンとなり、-M で指定したパターンは二番目以降となる。
  3. オプション(-P
    ファイルから検索パターンを読み込む。ファイルの1行が一つのパターンに相当する。
    行が空行ならばその行は無視する。
  4. オプション(-Q
    ファイルから検索パターンと形式指定文字列を読み込む。ファイルの1行が一つのパターンに相当する。
    行は、
    検索パターン tab 形式指定文字列
    の形式で、両項目とも空であってはならない。

上記のいずれの方法も混用できるが、混乱を避けるため、混用は避けたほうが良い。

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

オプション(-AND)を指定すると AND 検索を行う。 検定は条件の登場順に行い、条件が全て成立した時点で成立とする。 部分文字列の切り出しなどは最後の条件に従って行う。

その他の指定

  1. 検索の際の大文字小文字の区別をしない指定ができる(-I)。
  2. 入力行の替わりに、一致文字列や部分文字列の出力を指定できる(-R)。 また、出力行を細かく指定して組み立てることができる(-E)。
  3. 出力行に行番号やファイル名を付加できる(-F,-G)。 入力文字列の出力を抑制できる(-X)。
  4. マッチしたファイル名の出力ができる(-L)。 このときは一度マッチするとそのファイルの中での検索をそれ以上しないので、 詳細が不要な場合は速度的にも有利である。
  5. ファイル単位での一致数を出力する指定がある(-C)。 また、全体での一致数を出力する指定がある(-T)。これらの指定をすると、指定以外の出力は行わない。
  6. マッチしない行の出力ができる(-V)。

形式指定文字列

形式指定文字列は登場順に登録され、条件が成立したときのパターンの番号に対応する。 該当する形式指定文字列が無かった場合は、一番大きな番号の形式指定文字列を使用する。

形式指定文字列記述

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

\\'\'
\a制御文字 BELL(07h)
\b制御文字 BS(08h)
\B'|'
\D複引用符 "
\e制御文字 ESC(1Bh)
\f制御文字 FF(0Ch)
\g'>'
\l'<'
\n制御文字 CRLF(0Dh,0Ah)
\r制御文字 出力しない
\s半角スペース
\S単引用符 '
\t制御文字 TAB(09h)
\v制御文字 HM(0Bh)
\hnn1バイトコード
\xnnnn2バイトコード(JIS)
\I入力文字列の全体
\0一致文字列の全体
\1-\9部分文字列
\=nn;部分文字列
\=nn:ログされた部分文字列のリスト
\=nn[一致文字列の先頭から部分文字列の先頭まで。部分文字列がなければ何も出力しない
\=nn]部分文字列の末尾から一致文字列の末尾まで。部分文字列がなければ一致文字列
\Nファイル内行番号
\L出力データ相対番号
\Fファイル名
\[一致文字列の前まで
\]一致文字列の後
\/n,m/指定番号の位置マークの間の文字列。n 省略では一致文字列の先頭、m 省略では一致文字列の末尾。
位置が逆転していると文字列を後ろから前に出力する。
\(tsexpr) tsexpr の結果。
形式指定文字列の中の TSEXPR のアプリケーション・インタフェース

部分文字列は、引数に部分文字列番号を入れて呼び出すが、??ustrmode / ?? markmode / ??topmode / ??botmode / ??logmode で機能を切り替えることが出来る。
未定義あるいは、値が決まらなかった部分文字列やマークは sysbool(n) の値が偽となる。

sys(0)
??match
一致文字列
sys(n) n は 1 以上。デフォルトでは、番号(n)に相当する部分文字列。
モードにより返す値が異なる
部分文字列モード 番号に相当する部分文字列
マーク位置モード 番号に相当するマークの位置
マーク位置先頭モード 番号に相当する部分文字列の先頭
マーク位置末尾モード 番号に相当する部分文字列の末尾
部分文字列ログ出力モード 番号に相当する文字列のログ
sys(-1)
??str
入力文字列の全体
sys(-2)
??top
一致文字列の先頭位置
sys(-3)
??bot
一致文字列の末尾位置
sys(-4)
??strlen
入力文字列の長さ
sys(-5)
??start
検索開始位置
sys(-6)
??levelmark
レベルマークの値
sys(-7)
??ustrcount
部分文字列定義の数
sys(-8)
??markcount
マーク定義の数
sys(-10)
??ustrmode
部分文字列モードに切替
sys(-11)
??markmode
マーク位置モードに切替
sys(-12)
??topmode
部分文字列先頭位置モードに切替
sys(-13)
??botmode
部分文字列末尾位置モードに切替
sys(-14)
??logmode
部分文字列ログ出力モードに切替
sys(-100)
??filename
ファイル名
sys(-101)
??ln
ファイル内行番号
sys(-102)
??ix
出力データ相対番号

OPTION

-1
一回マッチした時点でファイル内の検索を放棄する。
-AND
複数条件を記述したときの条件の AND を取る。
-B
読み込みで 0x0d と 0x00 をマスクしない。通常は指定しない。
-C[N]
ファイル毎にパターンの含まれる行数を出力する。
-CN パターンが一つ以上あるファイルのみ出力
-Estr
出力行形式を細かく指定する。str は形式指定文字列。複数回指定できる。
-F
抽出データ行にファイル名、行番号をつける
-G
抽出データ行に行番号をつける
-HSn
スタックサイズを指定する(MBytes)。n は 0-1024。省略するか、値が 0 なら無制限。デフォルトは10。
-I
半角の大文字と小文字の区別をしない
-IF
半角、全角の大文字と小文字を区別しない
-L
パターンを含むファイル名だけを出力する。 最初に条件が成立した時点で以降の行の検索をしない
-LV
パターンを含まないファイル名だけを出力する。 最初に条件が成立した時点で以降の行の検索をしない
-Mpattern
検索のパターンを追加指定する。複数の記述が可能である。
指定したパターンのうち、一つでも成立すれば条件成立とみなす。(デフォルト)
-Ofilename
指定のファイルへ出力を切り替える
-Pfilename
検索パターンをファイルで指定する。 1行が一つのパターンに相当し、空行は無視する。
-Qfilename
検索パターンと形式指定文字列をファイルで指定する。 1行が一つの組に相当する。行の形式は、
検索パターン tab 形式指定文字列
第一項目が検索パターンで、第二項目が形式指定文字列。 両項目は空ではいけない。ファイル内に少なくとも1件は存在すること。
-R[n]
入力データ行の代わりに一致した文字列、または、部分文字列を出力する。
-R 一致文字列を出力する
-Rn 部分文字列を出力する。nは部分文字列の番号
-S
検索パターンをスペース無視モードで解釈する。
この指定をすると検索パターン中の空白は無視する。また、# を書くと、行末までを注釈として扱う。
-T
全体を通してパターンの含まれる個数を出力する
-U
ユーザー文字列のログ機能を使用する。 記録した内容を見るためには、オプション -R、または、オプション -E を指定する。 オプション -R でユーザー文字列を指定したばあいには、以下の区切りコードが有効となる。
-U区切りコードはタブ(\t)
-U; 区切りコードは改行(\r\n)
-U:str 区切りコードを指定の文字列にする。 str正規表現で書ける。 残念ながら \0 を書くとそこで文字列は終了してしまう。
-W[0n|n]
埋めこみ行番号の出力形式を指定する。デフォルトは -W
-W 自由形式 -W→「123」
-Wn 固定幅スペース埋めこみ -W5→「  123」
-W0n 固定幅0埋めこみ -W05→「00123」
-V
パターンを含まない行をマッチした行とする
-X
入力データ行の内容を出力しない。 この指定をすると、-G オプションも同時に指定されて、行番号が出力される
-Z[N]
ファイル全体を読みこんで1行として扱う。行番号は正しくない。
また、出力ファイルの改行が \r\n ではなく、\n である。必要な場合は後ろに concat などをはさむこと。
パターンでは、ファイル内の行末は \n で参照すること。
通常、ファイル末に行末が無い場合は読み込みのときに行末を付加するが、-ZN では、この補正を行わない。
このとき行番号の出力は正しくない。

用例

参考

正規検索正規検索記述
CEXTRA文字列の正規検索

バージョン

Ver 1.022012/04/28 検索の上限の制限廃止。複数の置換文字列を導入
Ver 1.012012/04/26-B オプション追加
Ver 1.00初版