uawk

提供: Personal Tukubai for Academic
ナビゲーションに移動 検索に移動

名前

uawk: ユニケージ版 awk

書式

使い方とオプション

Usage

uawk [options] -f <pgfile> ... <file>
uawk [options] <program> <file>

Option

-f <pgfile>     --file <pgfile>
-v <var>=<val>  --assign <var>=<val>

説明

ユニケージに特化して高速化した awk です。入力ファイルは <file> のみです。<file> の指定が無いとき、あるいは “-” の時は、標準入力を読み込みます。

-f <pgfile> を指定した場合、プログラムは <pgfile> から読み込まれます。このオプションを指定しない場合、<program> をプログラムと扱います。

-v <var>=<val> を指定すると、変数 <var> の初期値を <val> にします。

両オプションともに複数個指定することができます。

実行時の注意

環境変数 AWKPATH はありません。入力ファイルは1つだけ指定できます。

<変数、レコード、フィールドについて> レコードの区切り ‘’ (変更できません) フィールドの区切り ’ ’ (変更できません)

組み込み変数

uawk の組み込み変数は以下のものだけです。

CONVFMT     数値の変換フォーマット。デフォルト値は "%.6g"。

IGNORECASE  すべての正規表現と文字列操作において、大文字小文字を区別
            するかどうか制御します。

            IGNORECASE!=0 の場合、以下の場合に大文字と小文字の違いは
            無視されます。
              文字列比較
              プログラムのパターンにおけるマッチ
              ~ 及び !~ による正規表現マッチ、
              定義済み関数 gensub(), gsub(), index(), match(), sub()
              (例)/aB/ は "ab", "aB", "Ab", "AB" のいずれにもマッチ
                    します。

            初期値  0  (初期状態では、大文字と小文字は区別されます)

NF          現在の入力レコードのレコード数。
NR          現在までに読み込んだ入力レコード数の合計。

OFMT        数字の出力フォーマット。デフォルト値は "%.6g"。
OFS         出力フィールドの区切り文字。デフォルト値は空白。
ORS         出力レコードの区切り文字。デフォルト値は改行。

RLENGTH     match() によりマッチした文字列の長さ。
            -1 はマッチしなかったことを示します。
RSTART      match() によりマッチした最初の文字の位置。
            0 はマッチしなかったことを示します。

SUBSEP      多次元配列を実現する際に用いられる、配列のインデックスを
            結合する文字。デフォルト値は "\034" です。

変数について

awk/gawk とは異なり、指数表記(1.2e3 等)を数値と扱いません。変換時の丸めは四捨五入で行います。

正規表現について

awk/gawk とは異なり、REGEX(3) を用いています。

演算子について

| と |& はありません。gawkと同様に、^ ^= の代わりに、 ** **= も使用できます。

入出力文について

gawk と異なる文:

close(file)    第2引数(パイプ関連機能)無し

uawk では使えない文:

nextfile
command | getline
command | getline var
print | command
print expr-list | command
system(cmd-line)

printf/sprintf 関数の変換指定書式について

%e, %E  使えません
%g, %G  awk/gawk と異なり常に %f 形式となります。
        ただし、精度は有効数字桁数を表し、
                整数部の桁数が精度以上の場合は小数点以下を丸めます。
                後0は削除します。
count$  使えません

特殊ファイル名について

特別な意味を持つファイル名はありません。(/dev/stdin 等は OS でサポートされています)

quit 文の追加

quit 文は exit 文と同様にプログラム実行を終了します。exit 文は入力の残りが有っても直ちに終了するため、パイプ詰まりによるシグナルが発生する可能性が有ります。一方、quit 文は入力を読み切って(読み捨てて)から終了するので、パイプ詰まりによるシグナルが発生しません。

数値関数

gawk と同じ関数:

exp(expr)               自然対数 e の expr 乗
int(expr)               整数への丸め(切り捨て)
log(expr)               自然対数
sqrt(expr)              平方根

uawk では使えない関数:

atan2(x, y)
cos(expr)
rand()
sin(expr)
srand([expr])

uawk に追加した関数:

abs(expr)               絶対値
ceil(expr)              天井関数
floor(expr)             床関数
nearest(expr, prec)     小数点以下第 prec 位で最近値丸め
round(expr, prec)       小数点以下第 prec 位で四捨五入
roundup(expr, prec)     小数点以下第 prec 位で切り上げ
truncate(expr, prec)    小数点以下第 prec 位で切り捨て

数値および文字列関数

gawk と同じ関数:

asort                   配列要素のソート
asorti                  配列添字のソート
gensub                  上書きしない文字列の置換
gsub                    文字列の置換(全てを置換)
index                   文字列中の検索文字列位置を調べる
length                  文字列長を調べる
match                   正規表現パターンの適合位置
split                   文字列の分割
sprintf                 書式付文字列
strtonum                文字列を数値に変換
sub                     文字列の置換(1回だけ置換)
substr                  部分文字列の切り出し
tolower                 小文字への置換
toupper                 大文字への置換

uawk に追加した関数:

max(expr1, expr2, ...)  最大値
min(expr1, expr2, ...)  最小値
                        1つでも文字列の引数があれば文字列と
                        して比較され、結果も文字列になります。
                        そうでなければ数値として比較され、結
                        果も数値になります。

時間関数について

uawk では使えない関数:

systime()
strftime()

Version and Edition

Version : Wed Jan 13 10:39:42 JST 2021

Edition : 2


© 2021 Universal Shell Programming Laboratory site