awkium: an awk interpreter


Top - 使用方法 - 機能概要 - ライブラリ - awkiumファイルシステム - awkium shell - awkium sed - bcss - Javadoc - ダウンロード


文字列関数

s.asc(文字列)
文字列の最初の文字のコードをUnicodeで求めます。

s.at(文字列, i)
文字列のi番目の文字を返します。iは1から始まります。

s.casecmp(文字列1, 文字列2)
文字列を大文字・小文字を区別せずに比較し、 文字列1が辞書順で大きいときは正、 文字列1が辞書順で小さいときは負、 文字列1が辞書順で等しいときは0を返します。

s.caseequals(文字列1, 文字列2)
文字列を大文字・小文字を区別せずに比較し等しいときは真を返します。

s.checksum(文字列, bits)
文字列bitsのチェックサムを求めます。

s.chomp(文字列1[, 文字列2])
文字列1の末尾が文字列2のとき、 文字列1の末尾を切り捨てます。
文字列2が\nのとき、 文字列1の末尾の\n, \r, \r\nを切り捨てます。
文字列2が省略されたときはRSの値を使用します。

s.chop(文字列)
文字列の末尾を1文字切り捨てます。 末尾が\r\nのときは2文字切り捨てます。

s.chr(整数)
整数のUnicodeに対応する文字を返します。 文字コードにないときの処理は不定です。

s.cmp(文字列1, 文字列2)
文字列をに比較し、 文字列1が辞書順で大きいときは正、 文字列1が辞書順で小さいときは負、 文字列1が辞書順で等しいときは0を返します。

s.contains(文字列[, ...])
右の文字列引数が左の引数の部分文字列のときに真を返します。

s.dump(文字列)
文字列の文字が制御文字のときにエスケープします。
例: "\034abc\r\n" → "\\034abc\\r\\n"

s.ends(文字列1, 文字列2)
文字列1文字列2で終わるとき真を返します。

s.insert(文字列1, i, 文字列2)
文字列1のi番目に文字列2を挿入します。

s.join(配列[, 文字列])
配列文字列を区切り文字として連結します。 文字列が省略されたときはOFSの値を使用します。

s.ltrim(文字列)
文字列の左の空白を削除します。

s.parseint(文字列, radix)
文字列radix進数の整数に変換します。 radixは2から36までの整数です。

s.reverse(文字列)
文字列を逆順にします。

s.rindex(文字列1, 文字列2)
文字列を右から走査し、最初に見つかった場所を返します。 場所は1から始まります。 見つからなかったときは0を返します。

s.rtrim(文字列)
文字列の右の空白を削除します。

s.starts(文字列1, 文字列2)
文字列1文字列2で始まるとき真を返します。

s.tolower(文字列)
文字列を小文字に変換します。

s.tostring(整数, radix)
整数radix進数の文字列表記に変換します。 radixは2から36までの整数です。

s.toupper(文字列)
文字列を大文字に変換します。

s.tr(変換前, 変換後, 文字列)
文字列の変換します。 変換前変換後は文字列で、 UNIXのtr(1)コマンドと同じです。
例: s.tr("abc", "ABC", "abcde") → "ABCde"
例: s.tr("a-zA-Z", "A-Za-z", "abcdeABCDE") → "ABCDEabcde"
例: s.tr("a-x", "a-z", "abyz") → "abyz"
例: s.tr("a-z", "a-x", "abyz") → "abyy"

s.trim(文字列)
文字列の左右の空白を削除します。


配列関数

a.addall(配列1[, ...])
配列のキーを要素としたときの和集合を求めます。
つまり、右の配列のキーが配列1にないとき、 配列1にそのキーを足します。 配列1は書き換えられます。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a.addall(a, b) → a[1] = 1, a[2] = 1, a[3] = 1, a[4] = 2

a.any(配列)
配列の要素に真が1つ以上あるとき真を返します。

a.c([, ...])
引数から配列を生成します。 添字は1から始まります。

a.clear(配列)
配列をクリアします。

a.containkeys(配列[, ...])
左の配列引数の添字を右の配列が含むとき真を返します。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2のとき
a.containkeys(a, b) → 真

a.copy(配列)
配列をコピーします。

a.equalkeys(配列[, ...])
左の配列引数の添字が右の配列と等しいとき真を返します。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 1, b[2] = 1, b[3] = 1のとき
a.contain(a, b) → 真

a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[2] = 2, b[3] = 2のとき
a.contain(a, b) → 真

a.equals(配列[, ...])
左の配列引数の添字と内容が右の配列と等しいとき真を返します。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 1, b[2] = 1, b[3] = 1のとき
a.contain(a, b) → 真

a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[2] = 2, b[3] = 2のとき
a.contain(a, b) → 偽

a.every(配列)
配列の要素がすべて真のとき真を返します。

a.except(配列1[, ...])
配列のキーを要素としたときの差集合を求めます。
つまり、右の配列のキーが配列1にあるとき、 そのキーを削除します。 配列1は書き換えられません。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a = a.except(a, b) → a[2] = 1

a.intersect(配列1[, ...])
配列のキーを要素としたときの共通部分を求めます。
つまり、右の配列のキーが配列1にないとき、 そのキーを削除します。 配列1は書き換えられません。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a = a.intersect(a, b) → a[1] = 1, a[3] = 1

a.iota(整数1, 整数2)
整数1から1刻みで整数2までの要素を持つ 配列を生成します。添字は1から始まります。 整数1整数2より大きいときは-1刻みとなります。

a.member(配列, )
配列の要素にが含まれるとき真を返します。

a.removeall(配列1[, ...])
配列のキーを要素としたときの差集合を求めます。
つまり、右の配列のキーが配列1にあるとき、 そのキーを削除します。 配列1は書き換えられます。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a.except(a, b) → a[2] = 1

a.retainall(配列1[, ...])
配列のキーを要素としたときの共通部分を求めます。
つまり、右の配列のキーが配列1にないとき、 そのキーを削除します。 配列1は書き換えられます。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a.intersect(a, b) → a[1] = 1, a[3] = 1

a.size(配列)
配列のサイズを求めます。

a.union(配列1[, ...])
配列のキーを要素としたときの和集合を求めます。
つまり、右の配列のキーが配列1にないとき、 配列1にそのキーを足します。 配列1は書き換えられません。
例:
a[1] = 1, a[2] = 1, a[3] = 1
b[1] = 2, b[3] = 2, b[4] = 2のとき
a = a.addall(a, b) → a[1] = 1, a[2] = 1, a[3] = 1, a[4] = 2


日付関数

awkiumでは日付は1970年1月1日からの経過ミリ秒で表します。
t.day(整数)
日数を返します。

d.dayofyear(整数)
1月1日から数えた日数を返します。

d.era(整数)
紀元前か紀元後かを返します。 紀元前のとき"BC"、紀元後のとき"AD"を返します。

d.format(format, 整数)
日付をformatで整形します。
formatの書式はjava.text.SimpleDateFormatに準じます。

d.hour(整数)
時間を24時間制で返します。

d.millisec(整数)
ミリ秒を返します。

d.min(整数)
分数を返します。

d.month(整数)
月数を返します。

d.parse(format, 文字列)
文字列をformatで日付整数に変換します。 変換できないときは未定義を返します。
formatの書式はjava.text.SimpleDateFormatに準じます。

d.sec(整数)
秒数を返します。

d.time([year, [month, [day, [hour, [minute, [second, [millisecond, [zone]]]]]]]])
引数に対応した日付時刻整数を返します。
すべての引数が省略されたときは現在の時刻を返します。 そうでないときは以下の値が入ります。
month1
day1
hour0
minute0
second0
millisecond0
zoneローカルタイムゾーン

d.toarray(整数)
以下の値の入った配列を返します。
添字
era"BC"または"AD"
year西暦年
month西暦月
day西暦日
week曜日(日曜日=1, ..., 土曜日=7)
dayofyear1月1日からの日数
hour時間
minute
second
millisecondミリ秒
zoneUTCからのずれ

d.week(整数)
曜日(日曜日=1, ..., 土曜日=7)を返します。

d.year(整数)
西暦の年を返します。

d.zone(整数)
UTCからのずれを返します。


バイナリ関数

awkiumにおいて、バイナリ列は 文字コードをISO-8859-1にした文字列で表されます。
ISO-8859-1文字のみを使用する場合はバイナリ列と文字列は一致します。
b.at(バイナリ列, 位置)
場所にある符号付バイト値を返します。

b.uat(バイナリ列, 位置)
場所にある符号なしバイト値を返します。

b.shortat(バイナリ列, 位置 [, endianness])
場所にある符号付2バイト値を返します。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.shortatb(バイナリ列, 位置)
ビッグエンディアンで場所にある符号付2バイト値を返します。

b.shortatl(バイナリ列, 位置)
リトルエンディアンで場所にある符号付2バイト値を返します。

b.ushortat(バイナリ列, 位置 [, endianness])
場所にある符号なし2バイト値を返します。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.ushortatb(バイナリ列, 位置)
ビッグエンディアンで場所にある符号なし2バイト値を返します。

b.ushortatl(バイナリ列, 位置)
リトルエンディアンで場所にある符号なし2バイト値を返します。

b.intat(バイナリ列, 位置 [, endianness])
場所にある符号付4バイト値を返します。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.intatb(バイナリ列, 位置)
ビッグエンディアンで場所にある符号付4バイト値を返します。

b.intatl(バイナリ列, 位置)
リトルエンディアンで場所にある符号付4バイト値を返します。

b.uintat(バイナリ列, 位置 [, endianness])
場所にある符号なし4バイト値を返します。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.uintatb(バイナリ列, 位置)
ビッグエンディアンで場所にある符号なし4バイト値を返します。

b.uintatl(バイナリ列, 位置)
リトルエンディアンで場所にある符号なし4バイト値を返します。

b.longat(バイナリ列, 位置 [, endianness])
場所にある符号付8バイト値を返します。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.longatb(バイナリ列, 位置)
ビッグエンディアンで場所にある符号付8バイト値を返します。

b.longatl(バイナリ列, 位置)
リトルエンディアンで場所にある符号付8バイト値を返します。

b.tostring(バイナリ列 [, 開始位置[, 終了位置 [, 文字コード]]])
指定された位置のバイナリ値を指定された文字コードで 文字列に変換します。
引数は省略されたときは以下の値が使用されます。

b.c(バイト値[, ...])
バイト値をバイナリ列に変換します。

b.write(ファイル名, バイナリ列)
指定されたファイルにバイナリ列を書き込みます。

b.writebyte(ファイル名[, バイト])
指定されたファイルにバイトを書き込みます。

b.writeshort(ファイル名[, endianness [, 整数]])
指定されたファイルに2バイトを書き込みます。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.writeshortb(ファイル名 [, 整数])
ビッグエンディアンで指定されたファイルに2バイトを書き込みます。

b.writeshortl(ファイル名 [, 整数])
リトルエンディアンで指定されたファイルに2バイトを書き込みます。

b.writeint(ファイル名[, endianness [, 整数]])
指定されたファイルに4バイトを書き込みます。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.writeintb(ファイル名 [, 整数])
ビッグエンディアンで指定されたファイルに4バイトを書き込みます。

b.writeintl(ファイル名 [, 整数])
リトルエンディアンで指定されたファイルに4バイトを書き込みます。

b.writelong(ファイル名[, endianness [, 整数]])
指定されたファイルに8バイトを書き込みます。
endiannessは"big"または"little"で指定します。 省略されたときはネイティブのエンディアンが使用されます。

b.writelongb(ファイル名 [, 整数])
ビッグエンディアンで指定されたファイルに8バイトを書き込みます。

b.writelongl(ファイル名 [, 整数])
リトルエンディアンで指定されたファイルに8バイトを書き込みます。


ユーティリティ関数

util.eval(文字列)
文字列を評価し、その結果を返します。

util.sqlconnection(設定配列)
JDBCコネクションを取得します。
設定配列は以下の要素を持つ配列です。
urlJDBC URL userDBユーザ passwordパスワード
JDBCコネクションcから準備されたSQL文sを取得するには以下のようにします。 SQL文にはパラメータを指定することができます。パラメータは"?"で表します。
s = c("SQL Statement")
準備されたSQL文sを実行するときには以下のようにします。 SQL文がSELECT文のときは結果セットrを、 そうでないときは影響を受けた行数を得ます。
r = s(param1, param2, ...)
結果セットrからそれぞれの行aを得るときには以下のようにします。 aはクエリの結果が配列で返されます。
for(a in r) {
	process a
}
例: 以下のテーブルidolsにアクセスする。
name age
天海春香 17
高槻やよい 14
菊地真 17
我那覇響 16
例1: 変数ageにあるage以下の行を取り出す。
BEGIN {
	con["url"] = "jdbc:..."
	con["user"] = "user"
	con["password"] = "password"

	c = util.preparesql(con)
	s = c("SELECT name, age FROM idols WHERE age <= ?")
	r = s(age)
	for(a in age) {
		print a["name"], a["age"]
	}
}
例2: ファイルをインポートする
BEGIN {
	con["url"] = "jdbc:..."
	con["user"] = "user"
	con["password"] = "password"
	c = util.preparesql(con)
	s = c("INSERT INTO idols (name, age) VALUES (?, ?)")
}

{
	s($1, $2)
}


統計関数

awkiumでは以下の統計関数を使用できます。
これらの機能はawkiumの拡張機能です。
stat.mean(配列)
配列のすべての要素の算術平均(相加平均)を求めます。

stat.geometric(配列)
配列のすべての要素の幾何平均(相乗平均)を求めます。

stat.harmonic(配列)
配列のすべての要素の調和平均を求めます。

stat.median(配列)
配列のメディアンを求めます。

stat.mode(配列)
配列のモードを求めます。 配列に数値以外が含まれていたときは配列の最も多い要素を求めます。

stat.percentile(配列, パーセント)
配列のパーセンタイルを求めます。

stat.count(配列)
配列の値の要素数を数え、値をキーとする配列に格納します。

stat.histogram(配列, min, max, step)
配列をヒストグラムに変換します。 添字0はminより小さい外れ値、1からnまでは度数、 n+1はmaxより大きい外れ値をあらわします。

stat.variance(配列)
配列の分散を求めます。

stat.varianceunbiased(配列)
配列の不偏分散を求めます。

stat.skewness(配列)
配列の歪度を求めます。

stat.kurtosis(配列)
配列の尖度を求めます。

stat.covariance(配列x, 配列y)
配列x, 配列yの共分散を求めます。 添字は1から連続している必要があります。

stat.correlation(配列x, 配列y)
配列x, 配列yの相関係数を求めます。 添字は1から連続している必要があります。

stat.regression(配列x, 配列y)
配列x, 配列yを線形回帰します。 添字は1から連続している必要があります。
結果は2個の要素を持つ配列rで返され、回帰式はy=r[1]x+r[0]となります。

stat.normal(x, μ, σ2)
平均μ, 分散σ2の 正規分布f(x)の値を返します。

stat.gamma(x, k, θ)
ガンマ分布f(x)の値を返します。

stat.chisquared(x, ν)
カイ2乗分布f(x)の値を返します。

stat.exponential(x, λ)
指数分布f(x)の値を返します。

stat.t(x, ν)
スチューデントのt分布f(x)の値を返します。

stat.continuousuniform(x, a, b)
区間[a, b]の連続一様分布f(x)の値を返します。

stat.cuniform(x, a, b)
stat.continuousunifromと同じです。

stat.binomial(x, n, p)
二項分布f(x)の値を返します。

stat.poisson(x, λ)
ポアソン分布f(x)の値を返します。

stat.discreteuniform(x, a, b)
区間[a, b]の離散一様分布f(x)の値を返します。

stat.duniform(x, a, b)
stat.discreteunifromと同じです。

stat.beta(x, α, β)
ベータ分布f(x)の値を返します。

stat.f(x, d1, d2)
F分布f(x)の値を返します。

stat.cdfnormal(x, μ, σ2)
平均μ, 分散σ2の 正規分布f(x)の累積分布関数の値を返します。

stat.cdfgamma(x, k, θ)
ガンマ分布f(x)の累積分布関数の値を返します。

stat.cdfchisquared(x, ν)
カイ2乗分布f(x)の累積分布関数の値を返します。

stat.cdfexponential(x, λ)
指数分布f(x)の累積分布関数の値を返します。

stat.cdft(x, ν)
スチューデントのt分布f(x)の累積分布関数の値を返します。

stat.cdfcontinuousuniform(x, a, b)
区間[a, b]の連続一様分布f(x)の累積分布関数の値を返します。

stat.cdfcuniform(x, a, b)
stat.cdfcontinuousunifromと同じです。

stat.cdfbinomial(x, n, p)
二項分布f(x)の累積分布関数の値を返します。

stat.cdfpoisson(x, λ)
ポアソン分布f(x)の累積分布関数の値を返します。

stat.cdfbeta(x, α, β)
ベータ分布f(x)の累積分布関数の値を返します。

stat.cdff(x, d1, d2)
F分布f(x)の累積分布関数の値を返します。

stat.cdfdiscreteuniform(x, a, b)
区間[a, b]の離散一様分布f(x)の累積分布関数の値を返します。

stat.cdfduniform(x, a, b)
stat.discreteunifromと同じです。

stat.cdfbeta(x, α, β)
ベータ分布f(x)の累積分布関数の値を返します。

stat.cdff(x, d1, d2)
F分布f(x)の累積分布関数の値を返します。

stat.qnormal(x, μ, σ2)
平均μ, 分散σ2の 正規分布f(x)の確率点を返します。

stat.qgamma(x, k, θ)
ガンマ分布f(x)の確率点を返します。

stat.qchisquared(x, ν)
カイ2乗分布f(x)の確率点を返します。

stat.qexponential(x, λ)
指数分布f(x)の確率点を返します。

stat.qt(x, ν)
スチューデントのt分布f(x)の確率点を返します。

stat.qcontinuousuniform(x, a, b)
区間[a, b]の連続一様分布f(x)の確率点を返します。

stat.qcuniform(x, a, b)
stat.qcontinuousunifromと同じです。

stat.qbinomial(x, n, p)
二項分布f(x)の確率点を返します。

stat.qpoisson(x, λ)
ポアソン分布f(x)の確率点を返します。

stat.qdiscreteuniform(x, a, b)
区間[a, b]の離散一様分布f(x)の確率点を返します。

stat.qduniform(x, a, b)
stat.qdiscreteunifromと同じです。

stat.qbeta(x, α, β)
ベータ分布f(x)の確率点を返します。

stat.qf(x, d1, d2)
F分布f(x)の確率点を返します。

stat.rnormal(μ, σ2[, n])
平均μ, 分散σ2の 正規分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rgamma(k, θ[, n])
ガンマ分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rchisquared(ν[, n])
カイ2乗分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rexponential(λ[, n])
指数分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rt(ν[, n])
スチューデントのt分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rcontinuousuniform(a, b [, n])
区間[a, b]の連続一様分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。
rand()関数は、区間[a, b)の乱数を返しますが、 この関数は区間[a, b]の乱数を返します。

stat.rcuniform(a, b [, n])
stat.rcontinuousunifromと同じです。

stat.rbinomial(n, p[, n])
二項分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rpoisson(λ[, n])
ポアソン分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rdiscreteuniform(a, b [, n])
区間[a, b]の離散一様分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rduniform(a, b[, n])
stat.rdiscreteunifromと同じです。

stat.rbeta(α, β[, n])
ベータ分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.rf(d1, d2[, n])
F分布f(x)の乱数系列を返します。
nが省略されたときは単一の乱数を返します。

stat.chisquaredtest(測定値, 理論値, 有意水準)
与えられたデータについてカイ2乗検定をします。 仮説が棄却されたときに0を返します。

stat.t1test(測定値, 推定平均, 有意水準)
与えられたデータについて1系列のt検定をします。 仮説が棄却されたときに0を返します。

stat.t2test(測定値1, 測定値2, 有意水準)
与えられたデータについて2系列のt検定をします。 仮説が棄却されたときに0を返します。


数学関数

m.abs(数/配列)
の絶対値(複素数のときはノルム)を返します。

m.angle(数/配列)
の偏角を返します。

m.c(実数1, 実数2)
複素数を得ます。

m.conj(数/配列)
の共役複素数を返します。

m.im(数/配列)
の虚部を返します。

m.re(数/配列)
の実部を返します。


リレーショナル演算関数

awkiumでは以下のリレーショナル演算関数を使用できます。
awkiumにおいて、リレーショナル表は以下の形式で表現されます。

array[column_number] = record name TBLSEP value SUBSEP ...

ここで、column_numberは1からの連番、 SUBSEPは組み込み変数SUBSEP、TBLSEPは組み込み変数TBLSEPの 内容を表します。 TBLSEPはデフォルトで"0x1e"です。

例として、テーブルidols
name age height weight
天海春香 17 158 46
高槻やよい 14 145 37
菊地真 17 159 44
我那覇響 16 152 41
は以下のようにあらわされます。 (ここで、SUBSEP=","、TBLSEP=":"とします)
idols[1] = name:天海春香,age:17,height:158,weight:46
idols[2] = name:高槻やよい,age:14,height:145,weight:37
idols[3] = name:菊地真,age:17,height:159,weight:44
idols[4] = name:我那覇響,age:16,height:152,weight:41
これらの機能はawkiumの拡張機能です。
rel.select(テーブル, 式文字列)
テーブルから式文字列に一致するレコードを選択します。 レコードを参照するにはレコード名を式文字列に指定します。
例:テーブルidolsからageが16以下のレコードを求める
rel.select(idols, "age <= 16")
name age height weight
高槻やよい 14 145 37
我那覇響 16 152 41

rel.project(テーブル, レコード, ...)
テーブルレコードに一致する行を取り出します(射影)。
例:テーブルidolsからname,ageのみを取り出す。
rel.project(idols, "name", "age")
name age
天海春香 17
高槻やよい 14
菊地真 17
我那覇響 16

rel.restrict(テーブル1, テーブル2)
テーブル1からテーブル2を含むレコードを取り出します (制限)。
例:テーブルidolsから以下のテーブルresを制限する。
age height
17 158
rel.project(idols, res)
name age height weight
天海春香 17 158 46

rel.naturaljoin(テーブル1, テーブル2)
テーブル1テーブル2を自然結合します。
例:テーブルidolsから以下のテーブルthreeを結合する。
name b w h
天海春香 83 56 82
高槻やよい 74 54 78
星井美希 86 55 83
rel.naturaljoin(idols, three)
name age height weight b w h
天海春香 17 158 46 83 56 82
高槻やよい 14 145 37 74 54 78

rel.union(テーブル1, テーブル2)
テーブル1テーブル2の和集合を計算します。

rel.intersect(テーブル1, テーブル2)
テーブル1テーブル2の共通部分を計算します。

rel.except(テーブル1, テーブル2)
テーブル1テーブル2の差集合を計算します。

rel.crossjoin(テーブル1, テーブル2)
テーブル1テーブル2の直積集合を計算します。

rel.divide(テーブル1, テーブル2)
テーブル1テーブル2の商集合を計算します。
例:テーブルa
name hobby
天海春香 お菓子作り
天海春香 カラオケ
三村かな子 お菓子作り
大槻唯 カラオケ
とテーブルb
hobby
お菓子作り
カラオケ
の商集合を求める
rel.divide(a, b)
name
天海春香


線形代数

awkiumにおいて、行列は2つの数を添字とする配列で表されます。
例:
    + 1 2 3 +
a = | 4 5 6 |
    + 7 8 9 +
a[1,1] = 1, a[1,2] = 2, a[1,3] = 3
a[2,1] = 4, a[2,2] = 5, a[2,3] = 6
a[3,1] = 7, a[3,2] = 8, a[3,3] = 9
であらわされます。

行列の和、差、スカラー倍は配列同士の演算で実現できます。

mat.det(行列)
行列式を返します。

mat.invert(行列)
逆行列を返します。 行列が正則でないときはエラーを返します。

mat.multiply(行列1, 行列2)
行列の積を返します。

mat.solve(行列A, ベクトルb)
連立1次方程式Ax = bを解き、その結果を返します。 行列が正則でないときはエラーを返します。