EXPRLN 行をTSEXPRで計算

書法

EXPRLN expr [filename]* [option]*

SHELLMODE

@記述、!記述、^記述、#記述

詳細

第一パラメータをTSEXPR式の連続として解釈して、 入力ファイルの各行を計算し、標準出力する。
ファイル名を省略すると標準入力を扱う。
通常は式の値を常に出力するが、出力行を抑制する検定モードを指定できる(-P)。

 入力行内で有効な制御コードはタブのみ。それ以外は入力時に読み飛ばされる。

行を一まとめの文字列として扱うので、テキスト処理などに向いている。

式記述

{ TSEXPR式; }+
TSEXPR式を;で区切って第一パラメータに記述する。

また、#記述を行った場合、複数行の記述が可能だが、 このとき、改行は半角スペースに置きかえられるので注意すること。

 実行に先立って初期化式を実行できる(-I)。 また、実行の最後に値を出力できる(-F)。
実行の最後だけの値を出力する場合には、各行の出力を抑制すればよい(-S)。

式評価モード

 複数の式を書けるが、最初の式を特別扱いして、以降の実行の有無を制御するモードがある。

通常モード
入力行数と同じ行だけ常に出力する。
出力はTABファイルで、各項目には、先頭から順に式の値が対応する。
検定モード
検定モードでは、第一式が検定式となり、この式の値がTRUEになる行だけを出力する。 従って、第一式の型は論理型であること。
出力はTABファイルで、各項目には、第二式から順に式の値が対応する。

実行方法

 標準の行単位のほかに、メモリ中にファイルを読み込んで処理するモードがある。

各行処理
標準ではこのモード。行ごとに読み込み、式を評価し、出力する。
アプリケーション・インタフェース
引数略記変数名説明
1 @1 ??line 現在の行
0 &0 ??gln 通算行番号
-1 &(-1) ??ln ファイル内行番号
-2 &(-2) ?fn ファイル番号
-3 @(-3) ??filename 処理中のファイル名
-10 &(-10) ??lastlinep 最終行で真
-11 SYS(-11) ??off 出力抑制フラグをオンにする
-12 SYS(-12) ??on 出力抑制フラグをオフにする
-13 @(-13) 次の行に移行する。次の行を返す。
次の行がない場合、""を返す。
SYSBOOL(-13) 次の行に移行する。
次の行があれば真を、無ければ偽を返す。
新しい行の値は、@1で参照できる
??next 次の行に移行する。次の行を返す。
次の行がない場合、FALSEを返す。
??print 出力の許可状態を表す論理値。 行の計算式、初期化式などそれぞれの場合に固有である。
??print := bool
この変数に論理値を代入することで出力の可否を制御できる。
bool SPOOL(str 文字列 ) 文字列を直接出力する。
一括行読込
オプション(-Z)で一括読み込みを指定できる。一つのファイルをまとめて読み込む。
式は、ファイル全体に対して一度だけ実行する。
評価時には各行を参照できるので、柔軟な処理ができる一方、ループ処理が自動化されていないので、やや手続き的な式の書き方が必要になる。
アプリケーション・インタフェース
引数略記変数名説明
1 以上 @n 指定番号の行。
SYSBOOL(n) 指定番号の行。行があれば真、無ければ偽。
0 &0 ??gln 読み込んだ通算行数
-1 &(-1) ??ln 該当ファイル行数
-2 &(-2) ??fn ファイル番号
-3 @(-3) ??filename 処理中のファイル名
-11 &(-11) ??off 出力抑制フラグをオンにする
-12 &(-12) ??on 出力抑制フラグをオフにする
??print 出力の許可状態を表す論理値。 行の計算式、初期化式などそれぞれの場合に固有である。
??print := bool
この変数に論理値を代入することで出力の可否を制御できる。
bool SPOOL(str 文字列 ) 文字列を直接出力する。
一括行読込行繰返
オプション(-ZC)では一括読み込みをし、さらに、行数分だけ、着目行番号を増加させながら、式処理を繰り返す。
各行に対しての自動処理で、すべての行を参照できる。やや柔軟性に欠けるが、式は書きやすい処理。
アプリケーション・インタフェース
引数略記変数名説明
1 以上 @n 指定番号の行。存在しない行では""。
SYSBOOL(n) 行が存在すれば真、存在しなければ偽。
0 &0 ??line 処理中の行
-1 &(-1) ??ln 該当ファイル行数
-2 &(-2) ??fn ファイル番号
-3 @(-3) ??filename 処理中のファイル名
-4 &(-4) ??cl 着目行番号(1〜)
-11 SYS(-11) ??off 出力抑制フラグをオンにする
-12 SYS(-12) ??on 出力抑制フラグをオフにする
??print 出力の許可状態を表す論理値。 行の計算式、初期化式などそれぞれの場合に固有である。
??print := bool
この変数に論理値を代入することで出力の可否を制御できる。
bool SPOOL(str 文字列 ) 文字列を直接出力する。
一括読込
オプション(-ZA)ではすべての行を連結して一つの文字列にして読み込む。行末には"\n"を付加する。式処理はファイルに対して一度だけ評価する。
すべてのテキストが一つの文字列として扱われるので、行にまたがった文字列検索などに向いている。
アプリケーション・インタフェース
引数略記変数名説明
1 以上 @1 ??line 読み込んだデータ。
0 &0 ??gln 読み込んだ通算行数
-1 &(-1) ??ln 該当ファイル行数
-2 &(-2) ??fn ファイル番号
-3 @(-3) ??filename 処理中のファイル名
-11 SYS(-11) ??off 出力抑制フラグをオンにする
-12 SYS(-12) ??on 出力抑制フラグをオフにする
??print 出力の許可状態を表す論理値。 行の計算式、初期化式などそれぞれの場合に固有である。
??print := bool
この変数に論理値を代入することで出力の可否を制御できる。
bool SPOOL(str 文字列 ) 文字列を直接出力する。

OPTION

-B{tsexpr;}+
ファイル処理の最初に実行して出力する式を書く。各式は「;」で区切る。
-E{tsexpr;}+
ファイル処理の最後に実行する式を書く。各式は「;」で区切る
-F{tsexpr;}+
全体の処理の最後に実行する式を書く。各式は「;」で区切る。
-I{tsexpr;}+
処理の最初に実行する式を書く。各式は「;」で区切る。デフォルトでは出力しない。
-L{S|C|L}
1行を入力する際のコードの扱いを指定する。
-LSデフォルト。不要のコードを除去。LFを行末とみなす。CRは無視する。
-LCコードの変更をしない。CRLFを行末として扱う。
-LLコードの変更をしない。LFを行末として扱う。
-NOEOL
出力時に行末コードを抑制する。(行末でのTABの刈り込みも行わない)
-Ofilename
出力を指定のファイルに切替える。
-P
検定モードに切り替える
-Rstr
出力の改行コードを指定する。正規表現で書く。デフォルトは CRLF (\r\n)。
-S[+|-]
各行の出力を抑制する(-S、-S+)。または、抑制を解除する(-S-)。
-SB[+|-]
ファイル開始処理の出力を抑制する(-SB、-SB+)。または、抑制を解除する(-SB-)。
-SE[+|-]
ファイル開始処理の出力を抑制する(-SE、-SE+)。または、抑制を解除する(-SE-)。
-SI[+|-]
全体の開始処理の出力を抑制する(-SI、-SI+)。または、抑制を解除する(-SI-)。
-SF[+|-]
全体の終了処理の出力を抑制する(-SF、-SF+)。または、抑制を解除する(-SF-)。
-Tstr
出力の項目区切りコードを指定する。正規表現で書く。デフォルトは TAB (\t)。
-X
出力を項目数固定モードにする。行末でのTABの刈り込みは行わず、必ず改行する。
-V
項目出力をフィルタリングしない。
デフォルトでは、タブ(0x09)、行末(0x0a)以外の制御コードし、行末は、所定の改行コードに変換される。
-Z
一括行読込モード。
-ZA
一括読込モード。すべての行を一つのデータとして読み込む。
-ZC
一括行読込繰返モード。

用例

参考

バージョン

Ver 1.022012/06/26 -L で入力行の扱いを変更できるようにした。
Ver 1.012012/04/30 初期化/終了化でのcallback修正。
外部変数 ??print を導入。
Ver 1.00初版