CEXTRA pattern [filename]* [option]*
ファイルから正規検索で文字列を抽出し出力する。
ファイルを複数指定すると、順次処理し、連結して出力する。
ファイル名を省略すると標準入力に対して処理を行う。
CEXTRA.EXEは従来からある CXTRA.EXE と同等の機能を持ち、モダンな正規検索表記を用いる。
#
、!
、@
がある場合は、
次の-M
オプションを用いるか、
あるいは、パターンの先頭にダミーの\:
を置くと良い。-M
)-P
)-Q
)上記のいずれの方法も混用できるが、混乱を避けるため、混用は避けたほうが良い。
複数の条件を記述した場合は、OR
検索検索が出来る。
検定は条件の登場順に行い、条件が成立した時点で成立とする。
部分文字列の切り出しなどは最初に一致した条件に従って行う。
形式指定文字列は登場順に登録され、条件が成立したときのパターンの番号に対応する。 該当する形式指定文字列が無かった場合は、一番大きな番号の形式指定文字列を使用する。
全ての制御コードは出力しない。 制御コード以外の文字は以下にあげる文字を除いてそのまま出力される。
\\ | <\>自身 |
\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) |
\hnn | 1バイトコード |
\xnnnn | 2バイトコード(JIS) |
\I | 入力文字列の全体 |
\0 | 一致文字列の全体 |
\1-\9 | 部分文字列 |
\=nn; | 部分文字列 |
\=nn: | ログされた部分文字列のリスト |
\=nn[ | 一致文字列の先頭から部分文字列の先頭まで。部分文字列がなければ何も出力しない |
\=nn] | 部分文字列の末尾から一致文字列の末尾まで。部分文字列がなければ一致文字列 |
\N | ファイル内行番号-Z が指定されている場合は、
一致文字列の先頭がある行番号。
|
\L | 出力データ相対番号 |
\F | ファイル名 |
\[ | 一致文字列の前まで |
\] | 一致文字列の後 |
\/n,m/ | 指定番号の位置マークの間の文字列。n省略では一致文字列の先頭、m省略では一致文字列の末尾。 位置が逆転していると文字列を後ろから前に出力する。 |
\(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 |
マーク定義の数 | ||||||||||
??patno | 検索式番号(0〜) | ||||||||||
sys(-10) ??ustrmode |
部分文字列モードに切替 | ||||||||||
sys(-11) ??markmode |
マーク位置モードに切替 | ||||||||||
sys(-12) ??topmode |
部分文字列先頭位置モードに切替 | ||||||||||
sys(-13) ??botmode |
部分文字列末尾位置モードに切替 | ||||||||||
sys(-14) ??logmode |
部分文字列ログ出力モードに切替 | ||||||||||
sys(-100) ??filename |
ファイル名 | ||||||||||
sys(-101) ??ln |
ファイル内行番号 | ||||||||||
sys(-102) ??ix |
出力データ相対番号 | ||||||||||
sys(-1000) ??first |
行内の最初の出力項目で真(-XT,-XE,-XLのいずれかを指定したとき) |
-A
-AA
-B
-C[N]
-CN
パターンが一つ以上あるファイルのみ出力
-Estr
-F
-G
-HGn
-HG0 | 何も対策しない。無限ループする。 |
-HG1 | ポインタが進まなかったら、次の検索開始位置を+1する。 |
-HG2 | 最初の検索を除き、検索開始位置での幅0一致を成立させない。 |
-HG3 | 幅0マッチした直後の検索では、検索開始位置での幅0一致を成立させない。(デフォルト) |
-HL[ + | - ]
-HL | 有効にする |
-HL+ | 有効にする。 |
-HL- | 無効にする。(デフォルト) |
-HSn
-I
-IF
-Mpattern
-Ofilename
-Pfilename
-Qfilename
-Rn
-S
-T
-U
-U
区切りコードはタブ(\t)-U;
区切りコードは改行(\r\n)-U:str
区切りコードを指定の文字列にする。
str は正規表現で書ける。
残念ながら\0
を書くとそこで文字列は終了してしまう。
-W[0n|n]
-W | 自由形式 | -W→「123」 |
-Wn | 固定幅スペース埋めこみ | -W5→「 123」 |
-W0n | 固定幅0埋めこみ | -W05→「00123」 |
-XT[str]
str
を書くと区切りを文字列で指定できる。
str は正規表現で書ける。
残念ながら\0
を書くとそこで文字列は終了してしまう。
-XL[str]
-XE
-Y[位置番号]
\/
で指定した位置にする。
位置番号は1から9で、\/
が現れる順番。
位置番号を省略するとデフォルトの一致文字列の終わりから次の検索を行う。
-Z[N]
\r\n
ではなく、\n
である。必要な場合は後ろにconcatなどをはさむこと。\n
で参照する。-F
、-G
で出力する行番号は正しくない。
-E
で出力する行番号は正しい。-ZN
では、この補正を行わない。
Ver 1.02 | 2012/04/27 | 検索文字列の上限廃止。複数の置換文字列を可能に。 |
Ver 1.01 | 2012/04/26 | -B オプション追加 |
Ver 1.00 | 初版 |