|
RLENGTH |
|
match() に よ り マ
ッ チ し た 文 字
列 の 長 さ 。 −1
は マ ッ チ し な
か っ た こ と を
示 し ま す 。
多 次 元
配 列 を 実 現 す
る 際 に 用 い ら
れ る 、 配 列 の
イ ン デ ッ ク ス
を 結 合 す る 文
字 。 デ フ ォ ル
ト 値 は "\034" で
す 。 配 列 配 列
は 、 ブ ラ ケ ッ
ト ([ と ]) の 間
の 式 に よ っ て
イ ン デ ッ ク ス
を 指 定 し ま す
。 も し 式 が 式
の リ ス ト (式 , 式
...) な ら 、 式 の 値
を 変 数 SUBSEP の 値
を 区 切 り と し
て 結 合 し た 文
字 列 を イ ン デ
ッ ク ス と し て
用 い ま す 。 こ
れ に よ り 、 多
次 元 配 列 を シ
ミ ュ レ ー ト し
て い ま す 。 例
え ば 、
i =
"A"; j = "B"; k = "C"
x[i, j, k] = "hello, world\n" は
、 文 字 列 "hello,
world\n" を 、 文 字
列 "A\034B\034C" で イ
ン デ ッ ク ス し
た 配 列 x の 要 素
に 代 入 し て い
ま す 。 AWK の
配 列 は す べ て
、 文 字 列 に よ
り イ ン デ ッ ク
ス を 行 う 連 想
配 列 で す 。 特
殊 な 演 算 子 in
を if ま た は while
ス テ ー ト メ ン
ト で 用 い る こ
と に よ っ て 、
あ る イ ン デ ッ
ク ス 値 に お け
る 配 列 の 値 が
定 義 さ れ て い
る か を 調 べ る
こ と が で き ま
す 。
if (val in
array)
|
print array[val] も し 、
配 列 が 多 次 元
イ ン デ ッ ク ス
を 持 つ な ら 、 (i,
j) in array を 用 い ま す
。 |
in
は ま た 、 for ル
ー プ 中 で 、 配
列 の す べ て の
イ ン デ ッ ク ス
値 に つ い て 繰
り 返 す た め に
用 い る こ と が
で き ま す 。 配
列 の 要 素 は 、
delete ス テ ー ト メ
ン ト を 用 い て
削 除 す る こ と
が で き ま す 。
delete ス テ ー ト メ
ン ト は ま た 、
添 字 を 指 定 せ
ず に 配 列 名 の
み を 指 定 す る
こ と に よ り 、
配 列 全 体 を 削
除 す る た め に
も 使 え ま す 。
変 数 の 型 と 変
換 変 数 と フ ィ
ー ル ド は 、 (浮
動 小 数 点 数 の )
数 値 ま た は 文
字 列 、 あ る い
は 両 方 と し て
扱 わ れ ま す 。
変 数 の 値 が ど
の よ う に 解 釈
さ れ る か は 、
変 数 の 使 わ れ
方 に よ っ て 変
化 し ま す 。 数
式 中 で 用 い ら
れ れ ば 変 数 は
数 値 と し て 解
釈 さ れ 、 文 字
列 と し て 用 い
ら れ れ ば 文 字
列 と し て 解 釈
さ れ ま す 。 変
数 の 値 を 強 制
的 に 数 値 で あ
る と 解 釈 さ せ
た い 場 合 は 、
変 数 に 0 を 加 え
ま す 。 文 字 列
と 解 釈 さ せ た
い 場 合 は 空 文
字 列 を 結 合 し
ま す 。 文 字 列
を 数 値 に 変 換
す る 必 要 が あ
る 場 合 、 変 換
は atof(3) に よ っ て
行 わ れ ま す 。
数 値 を 文 字 列
に 変 換 す る 場
合 は 、 変 数 CONVFMT
の 値 を フ ォ ー
マ ッ ト 文 字 列
と し て 用 い て
、 sprintf(3) に よ り
行 わ れ ま す 。
AWK で は す べ
て の 数 値 は 浮
動 小 数 点 数 で
す が 、 整 数 値
は 常 に 整 数 と
し て 変 換 が 行
わ れ ま す 。 よ
っ て 、 以 下 の
場 合 、
CONVFMT =
"%2.2f"
a = 12
b = a "" 変 数b は
文 字 列 値 "12"
と な り 、 "12.00"
と は な り ま せ
ん 。
gawk
は 、 以 下 の よ
う に し て 比 較
を 行 い ま す : 2 つ
の 変 数 が 数 値
な ら 数 値 と し
て 比 較 し ま す
。 も し 片 方 が
数 値 で 片 方 が
’数 値 ’文 字 列
な ら 、 数 値 と
し て 比 較 さ れ
ま す 。 片 方 が
数 値 で な い 文
字 列 な ら 、 数
値 の ほ う が 文
字 列 に 変 換 さ
れ 、 文 字 列 と
し て 比 較 さ れ
ま す 。 両 方 と
も 文 字 列 な ら
、 文 字 列 と し
て 比 較 さ れ ま
す 。 POSIX 標 準
に 従 う な ら 、
両 方 と も 数 値
文 字 列 の 場 合
は 数 値 と し て
比 較 し ま す が
、 こ れ は 明 ら
か に 間 違 い で
す 。 gawk は そ の
よ う な 動 作 を
し ま せ ん 。
"57"
の よ う な 文 字
列 定 数 は 数 値
文 字 列 で は な
く 、 文 字 列 定
数 で す 。 「 数
値 文 字 列 」 の
概 念 は 、 フ ィ
ー ル ド 、 getline の
入 力 、 FILENAME 、
ARGV の 要 素 、
ENVIRON の 要 素 、 数
値 文 字 列 か ら
split() に よ っ て 作
成 さ れ た 配 列
の 要 素 に 対 し
て の み 適 用 さ
れ ま す 。 基 本
的 な 考 え 方 で
は 、 ユ ー ザ 入
力 、 そ れ も 数
値 に 見 え る ユ
ー ザ 入 力 の み
が 数 値 と し て
扱 わ れ ま す 。
初 期 化 さ れ て
い な い 変 数 は
、 数 値 と し て
は 0 を 、 文 字 列
と し て は "" (空
文 字 列 ) を 持 ち
ま す 。
awk は
行 指 向 の 言 語
で す 。 ま ず パ
タ ー ン 、 次 に
ア ク シ ョ ン が
続 き ま す 。 ア
ク シ ョ ン は {
と } で 囲 み ま
す 。 パ タ ー ン
ま た は ア ク シ
ョ ン は 省 略 す
る こ と も で き
ま す 。 も ち ろ
ん 、 両 方 と も
省 略 し て し ま
っ て は 意 味 が
あ り ま せ ん 。
パ タ ー ン が な
い 場 合 、 ア ク
シ ョ ン は す べ
て の 入 力 レ コ
ー ド に 対 し て
適 用 さ れ ま す
。 省 略 さ れ た
ア ク シ ョ ン は
以 下 と 等 価 で
す 。
{ print
} こ れ は レ コ ー
ド 全 体 を 出 力
し ま す 。 コ メ
ン ト は 文 字 “#”
で 始 ま り 、 行
末 ま で 続 き ま
す 。 空 行 は 、
複 数 ス テ ー ト
メ ン ト の 間 を
あ け る の に 使
う こ と が で き
ま す 。 通 常 、
ス テ ー ト メ ン
ト は 改 行 で 終
わ り ま す 。 た
だ し 、 次 の 記
号 で 行 が 終 わ
る 場 合 に は こ
の 限 り で は あ
り ま せ ん : “,”,
{, ?, :, &&, ||
。 do ま た は else
で 終 わ る 行 は
、 ス テ ー ト メ
ン ト が 自 動 的
に 以 降 の 行 へ
継 続 さ れ ま す
。 ま た 、 改 行
の 直 前 に “\” を
置 く こ と で 、
行 を 継 続 す る
こ と が で き ま
す 。 こ の 場 合
、 そ の 改 行 は
無 視 さ れ ま す
。
“;”
で 区 切 る こ と
に よ り 、 1行 に
複 数 の ス テ ー
ト メ ン ト を 記
述 す る こ と が
で き ま す 。 (通
常 の よ う に ) パ
タ ー ン -ア ク シ
ョ ン 対 中 の ア
ク シ ョ ン 部 に
お け る ス テ ー
ト メ ン ト だ け
で は な く 、 パ
タ ー ン -ア ク シ
ョ ン 対 ス テ ー
ト メ ン ト 自 身
も 、
“;” で 区 切 っ て
複 数 置 く こ と
が で き ま す 。
パ タ ー ン
AWK の パ タ ー ン
は 、 以 下 の う
ち の い ず れ か
で す 。
BEGIN
END
/regular expression/
relational expression
pattern && pattern
pattern || pattern
pattern ? pattern : pattern
(pattern)
! pattern
pattern1, pattern2
BEGIN
と END は 特 殊 な
パ タ ー ン で あ
り 、 入 力 と 比
較 さ れ る こ と
は あ り ま せ ん
。 す べ て の BEGIN
パ タ ー ン に 対
応 し た ア ク シ
ョ ン 部 は 結 合
さ れ 、 そ の よ
う な す べ て の
ア ク シ ョ ン 部
が 単 一 の BEGIN ブ
ロ ッ ク 中 に あ
る か の よ う に
扱 わ れ ま す 。
結 合 さ れ た ア
ク シ ョ ン は 、
す べ て の 入 力
フ ァ イ ル の 読
み 込 み に 先 立
っ て 実 行 さ れ
ま す 。 同 様 に
す べ て の END ブ
ロ ッ ク は 結 合
さ れ 、 す べ て
の 入 力 フ ァ イ
ル の 処 理 後 (あ
る い は 、 exit ス テ
ー ト メ ン ト が
実 行 さ れ た と
き ) に 実 行 さ れ
ま す 。 BEGIN と END
は パ タ ー ン 式
内 で 他 の パ タ
ー ン と 混 ぜ て
使 う こ と は で
き ま せ ん 。 ま
た 、 BEGIN と END パ
タ ー ン は ア ク
シ ョ ン 部 を 省
略 す る こ と が
で き ま せ ん 。
/regular
expression/ パ タ ー ン
で は 、 正 規 表
現 (regular expression) に マ ッ
チ し た 入 力 レ
コ ー ド に 対 し
て ア ク シ ョ ン
が 実 行 さ れ ま
す 。 正 規 表 現
は egrep(1) と 同 じ も
の が 使 え ま す
。 あ と に 要 約
を 示 し ま す 。
関 係 式 (relational expression)
で は 、 後 述 の
ア ク シ ョ ン に
つ い て の 節 で
示 す 演 算 子 を
用 い る こ と が
で き ま す 。 こ
れ ら は 概 し て
、 特 定 の フ ィ
ー ル ド が 正 規
表 現 に マ ッ チ
す る か ど う か
を 調 べ る た め
に 用 い ら れ ま
す 。 演 算 子
&&, ||, ! は 、
そ れ ぞ れ C 言 語
で の 論 理 AND、 論
理 OR、 論 理 NOT と 等
価 で す 。 C 言 語
と 同 様 に 、 評
価 値 が 確 定 し
た 時 点 で 以 降
の 評 価 を 打 ち
切 り ま す 。 こ
れ ら は 複 数 の
パ タ ー ン 式 を
結 合 す る た め
に 使 用 さ れ ま
す 。 他 の プ ロ
グ ラ ミ ン グ 言
語 と 同 様 、 括
弧 に よ っ て 評
価 順 序 を 変 更
す る こ と が で
き ま す 。
?:
演 算 子 は C 言 語
の も の と 同 様
で す 。 も し 、
最 初 の パ タ ー
ン が 真 な ら 、
テ ス ト の た め
に 2 番 目 の パ タ
ー ン が 用 い ら
れ 、 そ う で な
け れ ば 3 番 目 の
パ タ ー ン が 用
い ら れ ま す 。 2
番 目 と 3 番 目 の
パ タ ー ン の ど
ち ら か だ け が
評 価 さ れ ま す
。
pattern1,
pattern2 形 式 は 範
囲 パ タ ー ン と
呼 ば れ ま す 。
範 囲 パ タ ー ン
は 、 pattern1 に マ ッ
チ す る レ コ ー
ド か ら 、 pattern2 に
マ ッ チ す る レ
コ ー ド ま で の
す べ て に マ ッ
チ し ま す 。 こ
の 形 式 は 、 他
の パ タ ー ン 式
と 混 合 し て 用
い る こ と は で
き ま せ ん 。 正
規 表 現
awk の 正 規 表 現 は
egrep の も の と 同
様 に 、 拡 張 さ
れ た 正 規 表 現
で す 。 以 下 の
構 成 要 素 か ら
成 り 立 っ て い
ま す 。
|
c メ タ
文 字 で は な い |
|
c に マ
ッ チ し ま す 。 |
|
|
\c リ テ ラ ル 文
字 |
|
|
|
c に マ
ッ チ し ま す 。
|
. 改 行
を 含 む 任 意
の |
1 文 字 に
マ ッ チ し ま す
。 |
|
|
^ 文 字 列 の 先
頭 に マ ッ チ |
|
|
し ま す
。
|
|
|
|
$ 文 字 列 の 終
端 に マ ッ チ し
ま す 。 |
|
|
[abc...] 文 字 リ
ス ト で あ り 、 |
|
abc... の い
ず れ か 1 文 字 に
マ ッ チ し ま す
。
|
[^abc...]
文 字 リ ス ト の
逆 で あ り 、 |
|
abc... 以 外
の 1 文 字 に マ ッ
チ し ま す 。 |
|
r1|r2 選 言 : |
|
|
r1 ま た
は r2 に マ ッ チ
し ま す 。
|
r1r2 結 合
: |
|
r1 の 直
後 に r2 が 続 く
も の に マ ッ チ
し ま す 。 |
|
|
r+ |
|
|
|
r
の 1 回 以 上 の 繰
り 返 し に マ ッ
チ し ま す 。
|
r* |
|
r の 0 回
以 上 の 繰 り 返
し に マ ッ チ し
ま す 。 |
|
|
r? |
|
r の 0 回 ま た は
1 回 の 繰 り 返 し
に マ ッ チ し ま
す 。
グ ル ー
プ 化 : r に マ ッ
チ し ま す 。
r{n}
r{n,}
r{n,m} ブ
レ ー ス 中 に 1 つ
か 2 つ の 数 値 を
記 述 す る こ と
に よ り 、 イ
ン
タ ー バ
ル 表 現 を 表 し
ま す 。 ブ レ ー
ス 中 に 数 値 が 1
つ あ る 場 合 、
直 前 の 正 規 表
現 r が n 回 繰
り 返 さ れ ま す
。 2 つ の 数 値 が
コ ン マ で 区 切
ら れ て い る 場
合 、 r は n 回
か ら m 回 繰 り
返 さ れ ま す 。 1
つ の 数 値 に 続
い て コ ン マ が
あ る 場 合 、 r
は 少 な く と も
n 回 繰 り 返 さ
れ ま す 。 イ ン
タ ー バ ル 表 現
は −−posix ま た
は −−re−interval が
コ マ ン ド ラ イ
ン に て 指 定 さ
れ て い る と き
の み 利 用 可 能
で す 。
|
\y 語 の
先 頭 ま た は 末
尾 の 空 文 字 列
に マ ッ チ し ま
す 。 |
|
|
\B 語 の 中 の 空
文 字 列 に マ ッ
チ し ま す 。 |
|
|
\< 語 の 先 頭
の 空 文 字 列 に
マ ッ チ し ま す
。 |
|
|
\> 語 の 末 尾
の 空 文 字 列 に
マ ッ チ し ま す
。 |
|
|
\w 語 を 構 成 す
る 文 字 |
|
(レ タ ー
、 数 値 、 ア ン
ダ ス コ ア ) に マ
ッ チ し ま す 。
|
\W 語 を
構 成 す る 文 字
以 外 の 文 字 に
マ ッ チ し ま す
。 |
|
|
\’ バ ッ フ ァ |
|
(文 字 列 )
の 先 頭 の 空 文
字 列 に マ ッ チ
し ま す 。
|
\’ バ
ッ フ ァ の 末 尾
の 空 文 字 列 に
マ ッ チ し ま す
。 文 字 列 定 数
中 で 用 い る こ
と が で き る エ
ス ケ ー プ シ ー
ケ ン ス |
|
(後 述 参
照 ) は 、 正 |
規 表 現
中 で も 使 用 す
る こ と が で き
ま す 。 文 字 ク
ラ ス は POSIX 標
準 で 導 入 さ れ
た 新 機 能 で す
。 文 字 ク ラ ス
は 特 定 の 属 性
を 持 つ 文 字 列
リ ス ト の 特 殊
表 現 で す が 、
実 際 の 文 字 集
合 自 身 は 国 や
文 字 集 合 に よ
っ て 様 々 な も
の と な り ま す
。 例 え ば 、 ア
ル フ ァ ベ ッ ト
文 字 は ア メ リ
カ 合 州 国 と フ
ラ ン ス と で は
異 な り ま す 。
文 字 ク ラ ス が
有 効 な の は 、
文 字 リ ス ト の
ブ ラ ケ ッ ト の
中 の 正 規 表 現
だ け で す 。 文
字 ク ラ ス は 、
[: と 、 ク ラ ス
を 表 現 す る キ
ー ワ ー ド と 、
:] で 構 成 さ れ
ま す 。 以 下 に
POSIX 表 現 で 定
義 さ れ る 文 字
ク ラ ス を 示 し
ま す 。
[:alnum:] ア ル フ ァ ベ
ッ ト と 数 値 文
字 。
[:alpha:] ア ル フ ァ ベ
ッ ト 文 字 。
[:blank:] 空 白 と タ ブ
文 字 。
[:cntrl:] 制 御 文 字 。
[:digit:] 数 値 文 字 。
[:graph:] 印 字 可 能 で
可 視 な 文 字 。
(空 白 は 印 字 可
能 で す が 見 え
ま せ ん 。 一 方
a は 印 字 可 能
か つ 可 視 で す
。 )
[:lower:] ア ル フ ァ ベ
ッ ト 文 字 の 小
文 字 。
[:print:] 印 字 可 能 な
文 字 (制 御 文 字
以 外 )。
[:punct:] 句 読 点 文 字
(レ タ ー 、 数 値
、 制 御 文 字 、
空 白 文 字 の い
ず れ で も な い
文 字 )。
[:space:] 空 白 文 字 (空
白 、 タ ブ 、 フ
ォ ー ム フ ィ ー
ド 等 の 少 数 の
文 字 を 指 す )。
[:upper:] ア ル フ ァ ベ
ッ ト 文 字 の 大
文 字 。
[:xdigit:]
16 進 数 の
数 値 。 例 え ば
、 POSIX 標 準 以
前 で は 、 ア ル
フ ァ ベ ッ ト と
数 値 の 文 字 に
マ ッ チ す る た
め に は 、
/[A−Za−z0−9]/ と 書
き ま し た 。 し
か し 、 別 の ア
ル フ ァ ベ ッ ト
文 字 が 文 字 集
合 に 含 ま れ る
場 合 、 そ れ ら
に は マ ッ チ し
ま せ ん 。 POSIX
文 字 ク ラ ス で
は 、 /[[:alnum:]]/ と 記
述 す る こ と が
で き 、 文 字 集
合 の す べ て の
ア ル フ ァ ベ ッ
ト と 数 値 に マ
ッ チ し ま す 。
文 字 リ ス ト 中
に は 、 更 に 2 つ
の 特 殊 シ ー ケ
ン ス を 使 用 で
き ま す 。 こ れ
ら は 、 複 数 の
文 字 に よ っ て
表 現 さ れ る 単
一 シ ン ボ ル ( 照
合 文 字 と 呼 ば
れ ま す ) を 持 ち
、 複 数 の 文 字
が 参 照 や ソ ー
ト に お い て は
等 価 で あ る と
さ れ る 、 非 ASCII 文
字 集 合 に 適 用
さ れ ま す 。 (例
え ば 、 フ ラ ン
ス 語 で は 単 な
る “e” と グ レ ー
ブ ア ク セ ン ト
付 き の e` と で は
等 価 で す 。 ) 照
合 シ ン ボ ル 参
照 シ ン ボ ル は
複 数 文 字 の 参
照 要 素 で あ り
、 [. と .] で 括
り ま す 。 例 え
ば 、 ch が 参 照
要 素 の 場 合 、
[[.ch.]] は 正 規 表 現
と な り 、 こ の
参 照 要 素 に マ
ッ チ し ま す 。
一 方 、 [ch] は c
か h に マ ッ チ
す る 正 規 表 現
で す 。 等 価 ク
ラ ス 等 価 ク ラ
ス は 等 価 な 文
字 リ ス ト を 指
す ロ ケ ー ル 固
有 の 名 前 で す
。 名 前 は [= と
=] で 括 り ま す
。 例 え ば 、 名
前 e は “e,”
“e`,”, “e`.” の す
べ て を 表 現 す
る た め に 使 用
さ れ る か も し
れ ま せ ん 。 こ
の 場 合 、 [[=e=]] は
e, e´, e` の い
ず れ か に マ ッ
チ す る 正 規 表
現 と な り ま す
。 こ れ ら の 機
能 は 英 語 以 外
の ロ ケ ー ル に
て 非 常 に 有 用
で す 。 gawk が 正
規 表 現 の マ ッ
チ ン グ に 使 用
す る ラ イ ブ ラ
リ 関 数 は 、 現
在 POSIX 文 字 ク
ラ ス の み を 理
解 し 、 参 照 シ
ン ボ ル と 等 価
ク ラ ス は 理 解
し ま せ ん 。
\y,
\B, \<, \>, \w, \W,
\’, \’ の 演 算
子 は gawk 固 有 で
あ り 、 GNU 正
規 表 現 ラ イ ブ
ラ リ の 機 能 を
元 に し た 拡 張
で す 。 様 々 な
コ マ ン ド ラ イ
ン オ プ シ ョ ン
に よ っ て 、 正
規 表 現 中 の 文
字 を gawk が ど の
よ う に 解 釈 す
る の か を 制 御
で き ま す 。 オ
プ シ ョ ン 無 し
デ フ ォ ル ト で
は 、 gawk は 上 述
の POSIX 正 規 表
現 お よ び GNU
正 規 表 現 の す
べ て の 機 能 を
提 供 し ま す 。
し か し な が ら
、 イ ン タ ー バ
ル 表 現 は サ ポ
ー ト さ れ ま せ
ん 。
−−posix
POSIX 正
規 表 現 の み が
サ ポ ー ト さ れ
、 GNU 演 算 子
は サ ポ ー ト さ
れ ま せ ん (例 え
ば 、 \w は リ テ
ラ ル w に マ ッ
チ し ま す )。 イ
ン タ ー バ ル 表
現 は 許 さ れ ま
す 。
−−traditional
伝 統 的 な Unix awk の
正 規 表 現 が サ
ポ ー ト さ れ ま
す 。 GNU 演 算
子 、 イ ン タ ー
バ ル 表 現 、
POSIX 文 字 ク ラ
ス ( [[:alnum:]] な ど ) は
サ ポ ー ト さ れ
ま せ ん 。 8 進 ま
た は 16 進 の エ ス
ケ ー プ シ ー ケ
ン ス で 表 現 さ
れ る 文 字 は 、
正 規 表 現 の メ
タ 文 字 を 表 現
す る と し て も
、 リ テ ラ ル と
し て 扱 わ れ ま
す 。
−−re−interval
−−traditional
が 指 定 さ れ て
い た と し て も
、 正 規 表 現 中
で イ ン タ ー バ
ル 表 現 を サ ポ
ー ト し ま す 。
ア ク シ ョ ン ア
ク シ ョ ン は 、
ブ レ ー ス { と
} で 囲 み ま す
。 ア ク シ ョ ン
は 通 常 の 代 入
、 条 件 文 、 ル
ー プ 文 等 か ら
な り ま す 。 演
算 子 、 制 御 文
、 入 出 力 文 は C
言 語 と ほ ぼ 同
様 で す 。 演 算
子
AWK で
の 演 算 子 を 、
優 先 順 位 の 高
い も の か ら 順
に 示 し ま す 。
|
(...) グ ル ー プ
化 。 |
|
$ フ ィ ー ル ド
参 照 。 |
|
++ −− イ ン ク
リ メ ン ト 、 デ
ク リ メ ン ト 。
前 置 も 後 置 も
可 能 。 |
|
^ べ き 乗 |
(** も 同
様 の 意 味 で 使
用 で き る 。 ま
た **= 代 入 演 算
子 も 存 在 す る
)。
|
+ − ! 単
項 の プ ラ ス 、
マ イ ナ ス 、 論
理 否 定 。 |
|
|
|
* / % 乗 算 、 除
算 、 剰 余 。 |
|
|
|
+ − 加 算 と 減
算 。 |
|
|
|
space 文 字 列 結
合 。 |
|
|
|
< > |
|
|
|
<= >= |
|
|
|
!= == 通 常 の 関
係 演 算 子 。 |
|
|
|
~ !~ 正 規 表 現 マ
ッ チ 、 否 定 の
マ ッ チ 。 注 意
: |
|
~ と !~ の 左 辺
に 正 規 表 |
現 定 数
(/foo/等 ) を 用 い て
は い け ま せ ん
。 正 規 表 現 定
数 は 右 辺 に の
み 置 く こ と が
で き ま す 。 式
/foo/ ~ exp は (($0 ~ /foo/) ~
exp) と 等 価 で
あ り 、 こ れ は
通 常 意 図 す る
も の と は 異 な
り ま す 。
AND。
C 言
語 の 条 件 式 と
同 様 で す 。 expr1
? expr2 : expr3の 形
式 で 使 い ま す
。 も し expr1 が 真
な ら 式 の 値 は
expr2 に な り 、 そ
う で な け れ ば
expr3 に な り ま す
。 expr2 か expr3 の
う ち 片 方 の み
が 評 価 さ れ ま
す 。
|
= += −= |
|
|
|
*= /= %= ^= 代 入 。 絶
対 代 入 |
|
(var = value)
と 演 算 子 代 入
(他 の 形 式 ) が サ |
ポ ー ト
さ れ て い ま す
。 制 御 ス テ ー
ト メ ン ト 制 御
ス テ ー ト メ ン
ト は 以 下 の と
お り で す 。
if
(condition) statement [ else
statement ]
while (condition) statement
do statement while (condition)
for (expr1; expr2;
expr3) statement
for (var in array)
statement
break
continue
delete array[index]
delete array
exit [ expression ]
{ statements } 入 出 力
ス テ ー ト メ ン
ト 入 出 力 ス テ
ー ト メ ン ト は
以 下 の と お り
で す 。
|
close(file)
フ ァ イ ル |
|
(ま た は
パ イ プ 、 下 記
参 照 ) を ク ロ ー
ズ し ま |
す 。
|
getline 次 の
レ コ ー ド を |
|
$0 に 読
み 込 み ま す 。
NF, NR, FNR が 設 |
定 さ れ
ま す 。
|
getline <file
フ ァ イ ル |
|
file か ら
次 の レ コ ー ド
を $0 に 読 み 込
み ま |
す 。 NF
が 設 定 さ れ ま
す 。
|
getline var
次 の レ コ ー ド
を 変 数 |
|
var に 読
み 込 み ま す 。
NR, FNR が |
設 定 さ
れ ま す 。
|
getline var
<file フ ァ イ
ル |
|
file か ら
次 の レ コ ー ド
を 変 数 var に 読
み 込 み |
ま す 。
|
next 現 在
の レ コ ー ド に
対 す る 処 理 を
終 了 し 、 次 の
レ コ ー ド を 読
み 込 み 、 |
AWK プ
ロ グ ラ ム の 最
初 の パ タ ー ン
か ら 処 理 を 開
始 し ま す 。 C 言
語 の continue と 類 似
し た 意 味 を 持
ち ま す 。 も し
、 入 力 デ ー タ
の 終 端 に 達 し
た 場 合 、 END ブ
ロ ッ ク が 存 在
す れ ば 実 行 さ
れ ま す 。
|
nextfile 現
在 の 入 力 フ ァ
イ ル に 対 す る
処 理 を 終 了 し
、 次 の 入 力 フ
ァ イ ル か ら レ
コ ー ド を 読 み
込 み ま す 。 |
FILENAME と
ARGIND が 更 新 さ れ
、 FNR が 1 に リ セ
ッ ト さ れ 、
AWK プ ロ グ ラ
ム の 最 初 の パ
タ ー ン か ら 処
理 が 開 始 さ れ
ま す 。 入 力 デ
ー タ の 終 端 に
達 し た と き は
、 も し 存 在 す
れ ば 、 END ブ ロ
ッ ク が 実 行 さ
れ ま す 。 注 :
以 前 の バ ー ジ
ョ ン の gawk で は next
file と 2 語 で 使 用
さ れ て い ま し
た 。 こ の 用 法
は ま だ 認 識 さ
れ ま す が 、 警
告 メ ッ セ ー ジ
を 生 じ さ せ ま
す し 、 最 終 的
に は 無 く な る
表 現 で す 。
|
print 現 在
の レ コ ー ド を
出 力 し ま す 。
出 力 レ コ ー ド
は
ORS 変 |
数 の 値
に て 終 端 さ れ
ま す 。
|
print expr-list
式 を 出 力 し ま
す 。 各 式 は |
|
OFS の 値
で 区 切 ら れ ま
す 。 出 力 |
さ れ る
レ コ ー ド の 最
後 に は ORS の 値
が 付 加 さ れ ま
す 。
print expr-list
>file 式 を フ ァ
イ ル file に 出 力
し ま す 。 各 式
は OFS の 値 で 区
切 ら れ ま す 。
出 力 さ れ る レ
コ ー ド の 最 後
に は ORS の 値 が
付 加 さ れ ま す
。
printf fmt, expr-list 書 式 付
き 出 力 で す 。
printf fmt, expr-list >file
フ ァ イ ル file へ
の 書 式 付 き 出
力 で す 。
|
system(cmd-line) コ マ
ン ド |
|
cmd-line を 実 行 し
、 終 了 ス テ ー
タ ス を 返 し ま |
す ( POSIX
に 対 応 し な い
シ ス テ ム で は
使 用 で き な い
場 合 が あ り ま
す )。
|
fflush([file])
オ ー プ ン さ れ
て い る 出 力 フ
ァ イ ル ま た は
パ イ プ
file に |
関 連 づ
け ら れ て い る
バ ッ フ ァ を フ
ラ ッ シ ュ し ま
す 。 file を 指 定
し な い と 、 標
準 出 力 が フ ラ
ッ シ ュ さ れ ま
す 。 file が 空 文
字 列 の 場 合 、
オ ー プ ン さ れ
て い る す べ て
の フ ァ イ ル と
パ イ プ の バ ッ
フ ァ を フ ラ ッ
シ ュ し ま す 。
そ の 他 の 形 式
の リ ダ イ レ ク
ト と し て 以 下
の も の が 利 用
可 能 で す 。 print
と printf に 対 し て
、 >> file を 指
定 す る と 出 力
は フ ァ イ ル file
に 追 加 さ れ 、
| command は 出 力 を
パ イ プ に 対 し
て 行 い ま す 。
同 様 に 、 command|
getline は コ マ ン ド
の 出 力 か ら getline
を 行 な い ま す
。 getline は フ ァ イ
ル 終 端 で は 0 を
、 エ ラ ー 時 に
は −1 を 返 し ま
す 。 注 : ル ー プ
中 で getline へ パ イ
プ 書 き 込 み す
る 場 合 ま た は
print か printf か ら
パ イ プ 読 み 取
り す る 場 合 、
コ マ ン ド の 新
イ ン ス タ ン ス
を 作 成 す る た
め に close() を 使 用
す る こ と が 必
要 で す 。 パ イ
プ が EOF を 返 す と
き で も 、 AWK は 自
動 的 に は パ イ
プ を 閉 じ ま せ
ん 。
printf ス
テ ー ト メ ン ト
AWK で の printf ス
テ ー ト メ ン ト
と sprintf() 関 数 (後
述 参 照 ) は 、 以
下 の 変 換 指 定
書 式 を 受 け 付
け ま す 。
|
%c |
|
1 つ の
ASCII 文 字 。 %c
に 対 応 す る 引
数 が 数 値 な ら
、 そ の 値 を
ASCII コ ー ド と
み な し て 文 字
に 変 換 し ま す
。 そ う で な け
れ ば 、 引 数 は
文 字 列 で あ る
と 解 釈 さ れ 、
そ の 1 文 字 目 が
出 力 さ れ ま す
。 |
|
%d |
|
|
|
%i |
|
10 進 数 (整 数 部
分 )。 |
|
%e |
|
|
|
%E |
|
[-]d.dddddde[+-]dd と い う
形 式 の 浮 動 小
数 点 数 。 %E 形
式 で は e の 代
り に E が 使 用
さ れ ま す 。 |
|
%f |
|
[-]ddd.dddddd と い う 形
式 の 浮 動 小 数
点 数 。 |
|
%g |
|
|
|
%G |
|
%e と %f の 短 い
方 の 形 式 の 浮
動 小 数 点 数 。
余 計 な 0 は 省 略
さ れ ま す 。 %G
形 式 で は %e の
代 り に %E を 使
用 し ま す 。
符 号 な
し の 8 進 数 (整 数
)。
%u 符 号 な し の 10
進 数 (整 数 )。
%s 文 字 列 。
%x
%X 符 号 な し の 16
進 数 (整 数 )。 %X
形 式 で は 、 abcdef
の 代 り に ABCDEF
を 用 い
ま す 。
|
%% 単 一
の 文 字 |
|
% 。 引
数 は 使 用 し ま
せ ん 。 |
|
%
と 上 記 の 制 御
文 字 と の 間 に
オ プ シ ョ ナ ル
な 追 加 の パ ラ
メ ー タ を 置 く
こ と が で き ま
す 。 以 下 に そ
れ ら を 示 し ま
す 。
|
− 左 寄
せ 。 |
|
空 白 数 値 変
換 に お い て 、
正 の 値 の プ レ
フ ィ ッ ク ス は
空 白 と な り 、
負 の 値 の プ レ
フ ィ ッ ク ス は
マ イ ナ ス 記 号
と な り ま す 。 |
|
+ プ ラ ス 記 号
は 幅 修 正 子 |
(後 述 ) の
前 に 使 用 し 、
整 形 さ れ る デ
ー タ が 正 で あ
っ た と し て も
、 数 値 変 換 に
対 し て 常 に 符
号 を 付 け る こ
と を 指 示 し ま
す 。 + は 空 白
修 正 子 に 優 先
し ま す 。
|
# あ る
制 御 レ タ ー に
対 し て 「 別 の
形 式 」 を 使 用
し ま す 。 |
|
%o に 対
し て は 先 |
行 す る 0
を 与 え 、 %x と
%X に 対 し て は
非 0 の 結 果 に 対
し て 先 行 す る
0x と 0X を 与 え
ま す 。 %e, %E, %f
に 対 し て は 結
果 に 常 に 小 数
点 を 含 め ま す
。 %g, %G に 対 し
て は 結 果 の 末
尾 か ら 0 を 取 り
除 き ま せ ん 。
|
0 先 頭
の |
|
0 (ゼ ロ )
は フ ラ グ と し
て 動 作 し 、 出
力 を 空 白 で は
な く 0 で パ |
デ ィ ン
グ す る こ と を
示 し ま す 。 こ
れ は 非 数 値 の
出 力 書 式 に 対
し て も 適 用 さ
れ ま す 。 こ の
フ ラ グ が 有 効
な の は 、 フ ィ
ー ル ド 幅 が 印
字 さ れ る 値 の
幅 よ り 広 い と
き だ け で す 。
|
width フ ィ
ー ル ド が 指 定
し た 幅 |
|
width に な
る よ う に パ デ
ィ ン グ さ れ ま |
す 。 フ
ィ ー ル ド は 通
常 空 白 で パ デ
ィ ン グ さ れ ま
す 。 0 フ ラ グ
が 使 用 さ れ た
場 合 に は 0 で パ
デ ィ ン グ さ れ
ま す 。
|
.prec 印
字 に お い て 使
用 す る 精 度 を
数 値 で 指 定 し
ま す 。 |
|
%e, %E, %f
の 書 式 に |
対 し て
は 、 小 数 点 の
右 側 に 印 字 さ
れ る 数 字 の 数
を 指 定 し ま す
。 %g, %G の 書 式
に 対 し て は 、
仮 数 部 の 最 大
数 を 指 定 し ま
す 。 %d, %o, %i,
%u, %x, %X の 書 式
に 対 し て は 、
印 字 さ れ る 数
字 の 最 小 数 を
指 定 し ま す 。
文 字 列 に 対 し
て は 、 印 字 さ
れ る 文 字 列 か
ら と り だ さ れ
る 最 大 の 文 字
数 を 指 定 し ま
す 。
ANSI
C の printf() の 動 的
な 幅 width と 精 度
prec の 指 定 機 能
が 使 用 で き ま
す 。 幅 ま た は
精 度 の 指 定 部
分 に * を 指 定
す る こ と で 、
そ の 値 を printf ま
た は sprintf() へ の
引 数 で 指 定 で
き ま す 。 特 殊
フ ァ イ ル 名
print や printf で 書 き
込 み と き で も
、 getline で フ ァ イ
ル か ら 読 み 取
る と き で も 、
入 出 力 リ ダ イ
レ ク ト を 行 う
場 合 、 gawk は 内
部 的 な 特 殊 な
フ ァ イ ル 名 を
解 釈 し ま す 。
こ れ ら の フ ァ
イ ル 名 に よ り
、 親 プ ロ セ ス
(通 常 は シ ェ ル
で す ) か ら 受 け
継 い だ オ ー プ
ン 状 態 の フ ァ
イ ル デ ィ ス ク
リ プ タ を 用 い
て 入 出 力 を 行
っ た り 、 実 行
中 の gawk プ ロ セ
ス に 関 す る 情
報 を 得 る こ と
が で き ま す 。
特 殊 フ ァ イ ル
名 は 以 下 の と
お り で す 。
|
/dev/pid 現
在 の プ ロ セ ス
の プ ロ セ ス |
|
ID (10 進 数
で 、 最 後 に 改
行 が 付 き ま |
す ) を 読
み 込 む こ と が
で き ま す 。
|
/dev/ppid 現
在 の プ ロ セ ス
の 親 の プ ロ セ
ス の プ ロ セ ス |
|
ID (10 進 数
で 、 最 後 に |
改 行 が
付 き ま す ) を 読
み 込 む こ と が
で き ま す 。
|
/dev/pgrpid 現
在 の プ ロ セ ス
の プ ロ セ ス グ
ル ー プ |
|
ID (10 進 数
で 、 最 後 に 改
行 |
が 付 き
ま す ) を 読 み 込
む こ と が で き
ま す 。
|
/dev/user こ
の フ ァ イ ル を
読 む こ と で 、
改 行 で 終 わ る
単 一 の レ コ ー
ド が 得 ら れ ま
す 。 各 フ ィ ー
ル ド は 空 白 で
区 切 ら れ て い
ま す 。 |
$1 は
getuid(2) シ ス テ ム
コ ー ル の 値 、
$2 は geteuid(2) シ ス
テ ム コ ー ル の
値 、 $3 は getgid(2)
シ ス テ ム コ ー
ル の 値 、 $4 は
getegid(2) シ ス テ ム
コ ー ル の 値 で
す 。 も し 、 さ
ら に フ ィ ー ル
ド が あ れ ば 、
そ れ は getgroups(2) シ
ス テ ム コ ー ル
が 返 す グ ル ー
プ ID の リ ス ト で
す 。 全 て の シ
ス テ ム で 複 数
の グ ル ー プ が
サ ポ ー ト さ れ
て い る わ け で
は あ り ま せ ん
。
|
/dev/stdin 標
準 入 力 。 |
|
|
|
/dev/stdout 標 準 出 力
。 |
|
|
|
/dev/stderr 標 準 エ ラ
ー 出 力 。 |
|
|
|
/dev/fd/n オ ー プ
ン さ れ た フ ァ
イ ル デ ィ ス ク
リ プ タ |
|
n に 対 応 し て
い る フ ァ イ |
ル 。 エ
ラ ー メ ッ セ ー
ジ を 出 力 す る
に は 、 以 下 の
方 法 が 便 利 で
す 。
print
"You blew it!" > "/dev/stderr"
も し こ の 機 能
が 無 か っ た ら
、 次 の よ う に
す る し か な い
と こ ろ で す 。
print
"You blew it!" | "cat 1>&2"
こ れ ら の フ ァ
イ ル 名 は 、 コ
マ ン ド ラ イ ン
の デ ー タ フ ァ
イ ル 指 定 で 使
う こ と も で き
ま す 。 数 値 関
数
AWK は
以 下 の 定 義 済
み 数 値 関 数 を
持 っ て い ま す
。
|
atan2(y,
x) |
|
y/x の 逆
正 接 を ラ ジ ア
ン で 与 え ま す
。 |
|
|
cos(expr) |
|
expr の 余 弦 を ラ
ジ ア ン で 与 え
ま す 。 |
|
|
exp(expr) |
|
|
|
指 数 関
数 。
|
|
|
|
int(expr) 整 数
へ の 切 捨 て 。 |
|
|
log(expr) 自 然
対 数 。 |
|
|
rand() |
|
0 か
ら 1 の 間 の 乱 数
を 与 え ま す 。
|
sin(expr) |
|
expr の 正
弦 を ラ ジ ア ン
で 与 え ま す 。 |
|
|
sqrt(expr) |
|
|
|
平 方 根
。
|
|
|
|
|
srand([expr]) |
|
expr の 値 を 乱 数
生 成 関 数 の 種
と し て 用 い ま
す 。 式 が 指 定
さ れ な か っ た
場 合 は 、 時 刻
が 用 い ら れ ま
す 。 直 前 の 種
の 値 を 返 し ま
す 。 |
文 字 列
関 数
gawk は 以
下 の 定 義 済 み
文 字 列 関 数 を
持 っ て い ま す
。
|
gensub(r,
s, h [, t])
対 象 文 字 列 |
|
t か ら
正 規 表 現 r の
マ ッ チ を 探 し
ま |
す 。 h
が g ま た は G
で 開 始 す る 文
字 列 の 場 合 、
マ ッ チ す る r
を す べ て s に
置 き 換 え ま す
。 そ う で な い
場 合 、 h は 何
番 目 の r の マ
ッ チ を 置 き 換
え る の か を 示
し ま す 。 t が
与 え ら れ な い
場 合 、 代 り に
$0 が 使 用 さ れ
ま す 。 置 換 テ
キ ス ト s で は
、 シ ー ケ ン ス
\n た だ し n
は 1 か ら 9 ま で の
数 字 を 使 用 し
て 、 n 番 目 に
マ ッ チ し た 括
弧 付 き サ ブ 式
を 示 す こ と が
で き ま す 。 シ
ー ケ ン ス \0 は
文 字 & と 同 様
、 マ ッ チ し た
テ キ ス ト 全 体
を 表 し ま す 。
sub() や gsub() と は
異 な り 、 修 正
さ れ た 文 字 列
が 関 数 の 結 果
と し て 返 さ れ
、 元 の 対 象 テ
キ ス ト は 変 更
さ れ ま せ ん
。
|
gsub(r,
s [, t]) 文 字
列 |
|
t 中 で
正 規 表 現 r に
マ ッ チ し た 部
分 を す べ |
て s に
置 換 し ま す 。
置 換 の 個 数 を
返 し ま す 。 t
を 指 定 し な か
っ た 場 合 は $0
が 用 い ら れ ま
す 。 置 換 テ キ
ス ト で は 、 &
は 実 際 に マ ッ
チ し た テ キ ス
ト で 置 き 換 え
ら れ ま す 。 \&
を 使 用 す る と
リ テ ラ ル の &
を 得 る こ と が
で き ま す 。 sub(),
gsub(), gensub() に お け
る & と バ ッ ク
ス ラ ッ シ ュ に
関 す る 完 全 な
議 論 は Effective AWK Language
Programming を 参 照 し て
く だ さ い 。
|
index(s,
t) 文 字 列 |
|
s 中 に
含 ま れ る 文 字
列 t の 位 置 を
返 し ま |
す 。 t
が 含 ま れ て い
な い 場 合 は 0 を
返 し ま す 。
|
length([s])
文 字 列 |
|
s の 長
さ を 返 し ま す
。 s を 指 定 し な
か っ た |
場 合 に
は $0 の 長 さ を
返 し ま す 。
|
match(s,
r) 文 字 列 |
|
s 中 で
正 規 表 現 r に
マ ッ チ す る 位
置 を 返 し |
ま す 。
マ ッ チ し な い
場 合 は 0 を 返 し
ま す 。 RSTART と
RLENGTH の 値 が 設 定
さ れ ま す 。
|
split(s,
a [, r]) 文 字
列 |
|
s を 正
規 表 現 r を 用
い て 分 割 し 、
配 列 a に |
格 納 し
ま す 。 フ ィ ー
ル ド 数 を 返 し
ま す 。 r が 省
略 さ れ た 場 合
は FS が 用 い ら
れ ま す 。 配 列
a の 内 容 は 、
分 割 前 に ク リ
ア さ れ ま す 。
分 割 は 、 上 述
の フ ィ ー ル ド
分 割 と 同 じ 動
作 を 行 い ま す
。
|
sprintf(fmt,
expr-list) 書 式 |
|
fmt に 従
っ て exp-list を 整 形
表 示 し 、 結 果
の |
文 字 列
を 返 し ま す 。
|
sub(r,
s [, t]) |
|
gsub() と 似
て い ま す が 、
最 初 に マ ッ チ
し た 文 字 列 の
み が 置 換 さ れ
ま す 。
文 字 列
s の i 文 字 目
か ら 始 ま る 最
大 n 文 字 の 部
分 文 字 列 を 返
し ま す 。 n が
省 略 さ れ た 場
合 、 i 文 字 目
以 降 の 部 分 文
字 列 が 返 さ れ
ま す 。
文 字 列
str を コ ピ ー し
、 大 文 字 を す
べ て 小 文 字 に
変 換 し た も の
を 返 し ま す 。
ア ル フ ァ ベ ッ
ト で な い 文 字
は 変 化 し ま せ
ん 。
文 字 列
str を コ ピ ー し
、 小 文 字 を す
べ て 大 文 字 に
変 換 し た も の
を 返 し ま す 。
ア ル フ ァ ベ ッ
ト で な い 文 字
は 変 化 し ま せ
ん 。 時 間 関 数
タ イ ム ス タ ン
プ を 含 ん だ ロ
グ フ ァ イ ル の
処 理 は AWK プ
ロ グ ラ ム の 主
な 使 い 道 の 1つ
で す か ら 、 gawk
は タ イ ム ス タ
ン プ を 取 り 出
し た り 、 フ ォ
ー マ ッ ト す る
た め の 2 つ の 関
数 を 提 供 し ま
す 。
systime() 基
準 時 点 か ら の
経 過 秒 数 を 返
し ま す |
( POSIX シ
ス テ ム で は 、
基 準 時 点 は UTC で
1970 年 1 月 1 日 0:00 で す
)。 |
strftime([format
[, timestamp]]) 書 式
format に 従 っ て
timestamp を フ ォ ー
マ ッ ト し ま す
。 timestamp は systime() が
返 す 値 と 同 じ
形 式 で な け れ
ば な り ま せ ん
。 timestamp が 省 略
さ れ た 場 合 、
現 在 の 日 付 が
使 用 さ れ ま す
。 format が 省 略 さ
れ た 場 合 、 date(1)
が 出 力 に 使 用
す る も の と 同
じ デ フ ォ ル ト
フ ォ ー マ ッ ト
が 使 用 さ れ ま
す 。 利 用 可 能
な フ ォ ー マ ッ
ト に つ い て は
、 ANSI C の strftime()
関 数 の 仕 様 を
参 照 し て 下 さ
い 。 パ ブ リ ッ
ク ド メ イ ン な
strftime(3) と そ の マ
ニ ュ ア ル ペ ー
ジ が gawk と と も
に 配 布 さ れ て
い ま す 。 も し
、 gawk を 作 成 す
る た め に そ の
strftime を 用 い た 場
合 は 、 そ の マ
ニ ュ ア ル に 記
述 さ れ て い る
変 換 書 式 が gawk
で も 利 用 可 能
で す 。 文 字 列
定 数
AWK で の 文 字 列
定 数 は 、 ダ ブ
ル ク ォ ー ト (")
に 狭 ま れ た 文
字 の 列 で す 。
文 字 列 内 で は
、 C 言 語 の よ う
に い く つ か の
エ ス ケ ー プ シ
ー ケ ン ス が 使
え ま す 。
|
\\ バ ッ ク ス ラ
ッ シ ュ そ の も
の 。 |
|
|
\a 「 警 告 」 文
字 。 通 常 は |
|
ASCII BEL
文 字 で す 。
|
\b バ ッ
ク ス ペ ー ス 。 |
|
|
\f 改 ペ ー ジ |
|
(フ ォ ー
ム フ ィ ー ド )。
|
\n 改 行
。 |
|
|
|
\r 復 帰 |
(キ ャ リ ッ ジ リ
タ ー ン )。 |
|
|
\t 水 平 タ |
|
|
ブ 。
\xhex digits
\x に 続
く 16 進 数 で 表 現
さ れ た 文 字 。
ANSI C と 同 様 に
、 \x に 続 く す
べ て の 16 進 数 字
は エ ス ケ ー プ
シ ー ケ ン ス の
一 部 で あ る と
み な さ れ ま す
。 (こ の 機 能 に
よ り コ ミ ッ テ
ィ に よ る 言 語
デ ザ イ ン が 分
か り ま す 。 ) 例
え ば 、 "\x1B" は
ASCII ESC (エ ス ケ
ー プ ) 文 字 で す
。
|
\ddd |
|
1 桁 か 2 桁 か 3 桁
の 8 進 数 で 表 現
さ れ た 文 字 。
例 え ば 、 "\033"
は ASCII ESC (エ ス
ケ ー プ ) 文 字 で
す 。
文 字 c そ
の も の 。 エ ス
ケ ー プ シ ー ケ
ン ス は 正 規 表
現 定 数 内 で も
用 い る こ と が
で き ま す (例 え
ば 、 /[ \t\f\n\r\v]/ は
空 白 文 字 に マ
ッ チ し ま す )。
互 換 モ ー ド で
は 、 8 進 お よ び 16
進 の エ ス ケ ー
プ シ ー ケ ン ス
で 表 現 さ れ る
文 字 は 、 正 規
表 現 定 数 と し
て 使 用 さ れ た
場 合 、 リ テ ラ
ル と し て 扱 わ
れ ま す 。 そ れ
ゆ え 、 /a\52b/ は
/a\*b/ と 等 価 で す
。
AWK
で は 関 数 を 以
下 の よ う に し
て 定 義 し ま す
。
function
name(parameter list) {
statements } 関 数 は
、 パ タ ー ン ま
た は ア ク シ ョ
ン の 式 か ら 呼
び 出 さ れ た と
き に 実 行 さ れ
ま す 。 関 数 呼
び 出 し に お い
て 与 え ら れ た
実 引 数 が 、 関
数 宣 言 に お け
る 仮 引 数 に 受
け 渡 さ れ ま す
。 こ の と き 配
列 の 場 合 は 参
照 渡 し が 行 わ
れ 、 他 の 変 数
の 場 合 は 値 渡
し で 行 わ れ ま
す 。 元 々 AWK
に 関 数 は 備 わ
っ て い ま せ ん
で し た の で 、
局 所 変 数 の 機
構 は あ ま り ス
マ ー ト で は あ
り ま せ ん 。 局
所 変 数 は 引 数
リ ス ト の 余 分
な 引 数 と し て
宣 言 し ま す 。
局 所 変 数 と 関
数 引 数 を 区 別
す る た め 、 余
分 な 空 白 で 区
切 る の が 慣 習
で す 。 例 え ば
、 以 下 の よ う
に し ま す 。
function
f(p, q, a, b) # a & b は 局 所
変 数
{
|
|
|
... } |
|
|
/abc/ |
{ ... ; f(1, 2) ; ... } 関 数
呼 び 出 し に お
け る 左 括 弧 は
、 空 白 を 狭 ま
ず に 関 数 名 の
直 後 に 置 か な
け れ ば い け ま
せ ん 。 こ れ は
、 文 字 列 結 合
演 算 子 と の 曖
昧 さ を 生 じ さ
せ な い た め に
必 要 で す 。 こ
の 制 限 は 、 上
述 の 組 み 込 み
関 数 に は あ て
は ま り ま せ ん
。 関 数 は 、 他
の 関 数 を 呼 び
出 し た り 、 自
分 自 身 を 再 帰
的 に 呼 び 出 す
こ と が で き ま
す 。 局 所 変 数
と し て 用 い ら
れ る 関 数 引 数
は 、 関 数 起 動
時 に 空 文 字 列
お よ び 0 に 初 期
化 さ れ ま す 。
関 数 か ら 値 を
返 す に は return
expr を 使 用 し て
く だ さ い 。 値
を 指 定 し な い
場 合 、 ま た は
関 数 の 終 り か
ら “落 ち る ” (訳
注 : 関 数 を 閉 じ
る ブ レ ー ス に
到 達 す る ) こ と
に よ り 関 数 か
ら 戻 る 場 合 、
値 は 未 定 義 で
す 。 |
−−lint
が 指 定 さ れ た
と き 、 gawk は 実
行 時 で は な く
パ ー ズ 時 に 未
定 義 関 数 の 呼
び 出 し に 関 し
て 警 告 し ま す
。 実 行 時 の 未
定 義 関 数 の 呼
び 出 し は 致 命
的 な エ ラ ー と
な り ま す 。
function
の か わ り に func
を 用 い る こ と
が で き ま す 。
“/etc/passwd”
か ら 全 ユ ー ザ
の ロ グ イ ン 名
を 取 り 出 し 、
ソ ー ト し て 出
力 し ま す 。
|
|
BEGIN |
|
{ FS = ":" } |
|
|
|
{ print $1 | "sort" } フ ァ
イ ル の 行 数 を
数 え る 。 |
|
|
|
|
{ nlines++ } |
|
|
|
END |
{ print nlines } 行 番 号
を つ け る 。 |
|
|
|
{ print FNR, $0 } 全 フ ァ
イ ル を 通 し た
行 番 号 を つ け
る 。 |
|
|
|
|
{ print NR, $0 } |
|
|
egrep(1),
getpid(2), getppid(2), getpgrp(2),
getuid(2), geteuid(2), getgid(2),
getegid(2), getgroups(2)
The AWK
Programming Language, Alfred V. Aho, Brian W. Kernighan,
Peter J. Weinberger, Addison-Wesley, 1988. ISBN
0-201-07981-X.
Effective
AWK Language Programming, Edition 1.0, published by the
Free Software Foundation, 1995.
gawk
は 最 新 版 の
UNIX awk と の 互
換 性 だ け で な
く 、 POSIX 標 準
と の 互 換 性 も
追 求 し て い ま
す 。 こ の た め
gawk に は 以 下 の
よ う な 機 能 が
取 り 入 れ ら れ
て い ま す 。 こ
れ ら の 機 能 は
AWK 本 に は 述
べ ら れ て い ま
せ ん が 、 Bell Labs お
よ び POSIX 標 準
の awk が 有 し て
い る 機 能 で す
。 プ ロ グ ラ ム
実 行 前 に 変 数
代 入 を 行 な う
−v オ プ シ ョ ン
は 新 し い 物 で
す 。 AWK 本 に
よ れ ば 、 コ マ
ン ド ラ イ ン で
指 定 さ れ た 変
数 代 入 は awk が
引 数 を フ ァ イ
ル 名 と し て オ
ー プ ン す る 際
に 行 な わ れ る
こ と に な り ま
す 。 つ ま り こ
れ は BEGIN ブ ロ ッ
ク の 実 行 後 で
す 。 し か し な
が ら 初 期 の 頃
の 実 装 で は 、
引 数 の 中 で フ
ァ イ ル 名 に 先
立 っ て 変 数 代
入 が 指 定 さ れ
て い る 場 合 に
は 、 代 入 は BEGIN
ブ ロ ッ ク 実 行
の 前 に 行 わ れ
て い ま し た 。
そ し て ア プ リ
ケ ー シ ョ ン は
、 こ の 「 仕 様
」 に 依 存 す る
よ う に な り ま
し た 。 awk が そ
の ド キ ュ メ ン
ト に 合 う よ う
に 直 さ れ た 時
、 昔 の 動 作 に
依 存 し て い る
ア プ リ ケ ー シ
ョ ン の 便 宜 を
図 る た め に こ
の オ プ シ ョ ン
が 加 え ら れ ま
し た 。 (こ の 仕
様 は AT&T お よ び
GNU の 開 発 者
達 に よ っ て 合
意 さ れ ま し た
。 ) 独 自 機 能 の
た め の −W オ プ
シ ョ ン は POSIX
標 準 に 従 っ た
も の で す 。 引
数 の 列 に 特 別
な オ プ シ ョ ン
“−−” を 指 定
す る と 、 gawk は
そ こ が オ プ シ
ョ ン の 終 わ り
で あ る と 解 釈
し ま す 。 互 換
モ ー ド に お い
て は 未 定 義 オ
プ シ ョ ン は 警
告 が 出 力 さ れ
、 そ れ 以 外 の
も の は 無 視 さ
れ ま す 。 通 常
の 実 行 に お い
て は 残 り の 引
数 は AWK プ ロ
グ ラ ム に 引 き
渡 さ れ ま す 。
AWK
本 は srand() の 返 り
値 を 定 義 し て
い ま せ ん 。
POSIX 標 準 で は
、 そ の 関 数 が
使 っ て い る 種
を 返 し 、 乱 数
シ ー ケ ン ス を
追 跡 で き る よ
う に し て い ま
す 。 し た が っ
て gawk に お け る
srand() も 現 在 の 種
を 返 す よ う に
し て あ り ま す
。 そ の 他 に も
以 下 の よ う な
新 機 能 が あ り
ま す 。 −f オ プ
シ ョ ン の 複 数
回 使 用 (MKS awkに 倣
い ま し た ); ENVIRON
配 列 ; エ ス ケ ー
プ シ ー ケ ン ス
\a と \v ( gawk で 最
初 に 実 装 さ れ
、 AT&T の awk に フ
ィ ー ド バ ッ ク
さ れ ま し た ); 組
み 込 み 関 数
tolower() と toupper() (AT&T
に 倣 い ま し た );
printf に お け る
ANSI C 変 換 指 定
(AT&T 版 で 最 初 に
実 装 さ れ ま し
た )。
gawk
は POSIX awk に 対
し て 多 く の 拡
張 が 行 な わ れ
て い ま す 。 こ
の 節 で は そ れ
ら に つ い て 解
説 し ま す 。
−−traditional オ プ シ
ョ ン 付 き で gawk
を 起 動 す る こ
と に よ っ て 、
こ こ で 述 べ ら
れ て い る 拡 張
機 能 を す べ て
禁 止 す る こ と
が で き ま す 。
gawk
が 持 つ 以 下 の
機 能 は POSIX awk
で は 使 用 で き
ま せ ん 。
|
• エ ス
ケ ー プ シ ー ケ
ン ス |
|
\x 。 (
−−posix で 抑 止
で き ま す 。 ) |
|
• |
|
|
fflush()
関 数 。 ( −−posix
で 抑 止 で き ま
す 。 )
|
• |
|
systime(),
strftime(), gensub() の 各
関 数 。 |
|
|
• |
|
|
|
入 出 力
リ ダ イ レ ク ト
で 利 用 可 能 な
特 殊 フ ァ イ ル
名 は 理 解 さ れ
ま せ ん 。
|
|
|
|
|
|
• 変 数 |
|
ARGIND, ERRNO, RT は 特
殊 変 数 で は あ
り ま せ ん 。 |
|
|
• 変 数 |
|
IGNORECASE と そ の 副
作 用 は 利 用 で
き ま せ ん 。 |
|
|
• 変 数 |
|
FIELDWIDTHS と 固 定 長
フ ィ ー ル ド 分
割 。 |
|
|
• |
|
|
|
RS
の 正 規 表 現 と
し て の 使 用 。
|
• |
|
FS に 空
文 字 列 を 設 定
す る こ と に よ
り 各 文 字 を 切
り 出 す 能 力 と
、 split() の 3 番 目
の 引 数 。 |
|
• |
|
−f オ プ シ ョ
ン で 指 定 さ れ
た フ ァ イ ル 名
に つ い て パ ス
検 索 を 行 わ な
い こ と 。 よ っ
て 、 環 境 変 数
AWKPATH は 特 殊 な 変
数 で は あ り ま
せ ん 。
現 在 の
入 力 フ ァ イ ル
に 対 す る 処 理
を 終 わ ら せ る
た め に 使 用 さ
れ る nextfile 。
配 列 全
体 を 削 除 す る
た め に 使 用 さ
れ る delete 配 列
。
AWK
本 は 関 数 close() の
返 り 値 を 定 義
し て い ま せ ん
。 gawk の close() は
、 フ ァ イ ル や
パ イ プ を ク ロ
ー ズ す る 際 に
呼 び 出 す fclose(3)
や pclose(3)、 か ら の
返 り 値 を 返 し
ま す 。 オ プ シ
ョ ン −−traditional 付
き で gawk を 起 動
し −F オ プ シ ョ
ン へ の 引 数 fs
と し て “t” を 与
え た 場 合 に 、
FS の 値 は タ ブ
文 字 に 設 定 さ
れ ま す 。 gawk −F\t
... と タ イ プ し
て も 、 シ ェ ル
が 単 に “t” を ク
ォ ー ト す る の
で 、 “\t” は −F
オ プ シ ョ ン に
渡 さ れ ま せ ん
。 こ れ は 少 々
見 苦 し い 特 殊
事 例 で す の で
、 デ フ ォ ル ト
の 動 作 と し て
は 採 用 さ れ て
い ま せ ん 。
−−posix を 指 定
し た 場 合 に も
、 こ の 動 作 は
行 な わ れ ま せ
ん 。 タ ブ 文 字
を フ ィ ー ル ド
セ パ レ ー タ と
し て 使 用 し た
い 場 合 に は 、
ク ォ ー ト を 使
用 す る の が 最
良 で す : gawk
−F’\t’ ....
gawk
は 歴 代 の AWK
の 実 装 に あ っ
た 2 つ の 機 能 を
備 え て い ま す
。 1 つ め と し て
、 組 み 込 み 関
数 length() は 引 数 無
し で 呼 び 出 せ
る だ け で な く
、 さ ら に 括 弧
無 し で も 呼 び
出 せ ま す ! し た
が っ て
a = length #
Holy Algol 60, Batman! は 以 下
の 2例 と 同 じ で
す 。
a = length()
a = length($0)
POSIX
標 準 で は こ の
機 能 は “deprecated” と
注 意 書 き さ れ
て お り 、 gawk で
は コ マ ン ド ラ
イ ン で −−lint
を 指 定 し た 場
合 に 、 こ の 機
能 の 使 用 に 対
し て 警 告 を 出
力 し ま す 。 も
う 1 つ は 、 while,
for, do ル ー プ 本
体 の 外 で も
continue, break ス テ ー
ト メ ン ト を 使
用 で き る と い
う 機 能 で す 。
伝 統 的 な AWK
の 実 装 で は 、
こ の よ う に 使
用 し た continue ス テ
ー ト メ ン ト を
next ス テ ー ト メ
ン ト と 等 価 な
も の と し て 扱
っ て き ま し た
。 gawk で は
−−traditional が 指 定
さ れ た 場 合 に
、 こ の 機 能 を
使 う こ と が で
き ま す 。
環 境 に
POSIXLY_CORRECT が 存 在 す
る 場 合 に は 、
gawk は コ マ ン ド
ラ イ ン で
−−posix が 指 定
さ れ て い る 時
と 全 く 同 じ 動
作 を し ま す 。
こ の と き
−−lint が 指 定
さ れ て い る と
gawk は こ の 作 用
に つ い て の 警
告 メ ッ セ ー ジ
を 出 力 し ま す
。
AWKPATH
環 境 変 数 を 使
用 し て 、 gawk が
−f お よ び
−−file オ プ シ
ョ ン で 指 定 さ
れ た フ ァ イ ル
名 を 検 索 す る
デ ィ レ ク ト リ
を 指 定 で き ま
す 。
コ マ ン
ド ラ イ ン で の
変 数 代 入 機 能
を 使 用 す る に
は 、 変 数 へ の
代 入 を 直 接 コ
マ ン ド ラ イ ン
に 書 け ば よ く
、 −F オ プ シ ョ
ン を つ け る 必
要 は あ り ま せ
ん 。 こ の オ プ
シ ョ ン は 昔 の
awk と の 互 換 性
の た め だ け に
残 さ れ て い ま
す 。 フ ァ イ ル
/dev/fd お よ び /dev/stdin,
/dev/stdout, /dev/stderr を 実
際 に サ ポ ー ト
し て い る シ ス
テ ム で の gawk か
ら は 、 そ れ ら
が な い シ ス テ
ム と は 違 っ た
出 力 が 得 ら れ
る か も し れ ま
せ ん 。 gawk は そ
れ ら の フ ァ イ
ル を 内 部 で 解
釈 す る 際 に 標
準 出 力 へ の 出
力 を /dev/stdout へ の
出 力 と 同 期 さ
せ ま す が 、 そ
れ ら の フ ァ イ
ル を 持 つ シ ス
テ ム で は 出 力
は そ れ ぞ れ 異
な る フ ァ イ ル
へ 向 け ら れ ま
す 。 利 用 者 の
方 で 気 を 付 け
る よ う に し て
く だ さ い (Caveat Emptor)。
文 法 的 に 誤 っ
た 単 一 文 字 プ
ロ グ ラ ム は パ
ー ズ ス タ ッ ク
を 溢 れ さ せ る
傾 向 が あ り 、
ま っ た く 分 か
ら な い メ ッ セ
ー ジ を 生 成 す
る 傾 向 に あ り
ま す 。 こ の よ
う な プ ロ グ ラ
ム の 診 断 は 驚
く べ き こ と に
一 般 に 難 し く
、 診 断 の 努 力
は ま っ た く 無
意 味 に な り ま
す 。
こ の マ
ニ ュ ア ル は gawk
バ ー ジ ョ ン 3.0.6 に
つ い て 記 載 し
て い ま す 。
UNIX
awk の 最 初 の バ
ー ジ ョ ン は 、
AT&T Bell Labs の Alfred Aho と Peter
Weinberger お よ び Brian Kernighan
に よ っ て 設 計
、 実 装 さ れ ま
し た 。 Brian Kernighan は そ
の 保 守 と 改 良
を 続 け て い ま
す 。
Free Software
Foundation の Paul Rubin と Jay Fenlason
が 、 Seventh Edition UNIX
で 配 布 さ れ た
最 初 の バ ー ジ
ョ ン の awk と 互
換 性 を 持 つ よ
う に gawk を 書 き
ま し た 。 John Woods は
数 々 の バ グ 修
正 を 送 っ て 下
さ い ま し た 。 David
Trueman は 、 Arnold Robbins が 送
っ て 下 さ っ た
内 容 を も と に
、 gawk を 新 バ ー
ジ ョ ン の UNIX
awk 互 換 に し ま
し た 。
DOS へ
の 最 初 の 移 植
は Conrad Kwok と Scott Garfinkle に
よ っ て 行 な わ
れ ま し た 。 現
在 は Scott Deifik が DOS 版
の 保 守 を し て
い ま す 。 Pat Rankin は VMS
へ の 移 植 を 行
な い 、 Michal Jaegermann は Atari
ST へ の 移 植 を 行
な い ま し た 。 OS/2
へ の 移 植 は Kai Uwe Rommel
が Darrel Hankerson の 助 け
を 借 り て 行 な
い ま し た 。 Fred Fish
が Amiga サ ポ ー ト の
提 供 を 行 い ま
し た 。
gawk
の バ グ を 見 付
け た ら 、 電 子
メ ー ル を bug-gawk [AT] gnu.org
宛 に 送 っ て く
だ さ い 。 電 子
メ ー ル に は 、
オ ペ レ ー テ ィ
ン グ シ ス テ ム
と そ の リ ビ ジ
ョ ン 、 gawk の リ
ビ ジ ョ ン 、 コ
ン パ イ ル に 使
用 し た C コ ン パ
イ ラ 、 問 題 を
再 現 す る で き
る だ け 小 さ な
テ ス ト プ ロ グ
ラ ム と デ ー タ
を 記 述 し て く
だ さ い 。 バ グ
レ ポ ー ト を 送
る 前 に 2 つ の こ
と を 行 っ て く
だ さ い 。 第 1 に
、 最 新 の gawk を
使 用 さ れ て い
る こ と を 確 認
し て く だ さ い
。 多 く の (通 常
微 妙 な ) バ グ が
各 々 の リ リ ー
ス で 修 正 さ れ
て い ま す の で
、 ご 使 用 の も
の が 古 い 場 合
に は 問 題 は 既
に 解 決 さ れ て
い る か も し れ
ま せ ん 。 第 2 に
、 こ の マ ニ ュ
ア ル ペ ー ジ と
リ フ ァ レ ン ス
マ ニ ュ ア ル を
注 意 深 く 読 み
、 あ な た が バ
グ だ と 思 う も
の が 確 か に バ
グ で あ り 、 大
き く 変 わ っ た
言 語 仕 様 で は
な い こ と を 確
認 し て く だ さ
い 。 バ グ レ ポ
ー ト を comp.lang.awk に
投 稿 す る こ と
だ け は し な い
で く だ さ い 。
gawk の 開 発 者 達
は 時 々 こ の ニ
ュ ー ス グ ル ー
プ を 読 み ま す
が 、 バ グ レ ポ
ー ト を こ の ニ
ュ ー ス グ ル ー
プ に 投 稿 し て
も バ グ レ ポ ー
ト と し て 信 頼
性 が あ り ま せ
ん 。 上 記 の ア
ド レ ス へ の 電
子 メ ー ル で お
願 い し ま す 。
Bell Labs
の Brian Kernighan は テ ス ト
お よ び デ バ ッ
グ の 間 、 貴 重
な 助 力 を 提 供
し て 下 さ い ま
し た 。 感 謝 致
し ま す 。
Copyright
© 1996−2000 Free Software Foundation, Inc.
Permission is
granted to make and distribute verbatim copies of this
manual page provided the copyright notice and this
permission notice are preserved on all copies.
Permission is
granted to copy and distribute modified versions of this
manual page under the conditions for verbatim copying,
provided that the entire resulting derived work is
distributed under the terms of a permission notice identical
to this one.
Permission is
granted to copy and distribute translations of this manual
page into another language, under the above conditions for
modified versions, except that this permission notice may be
stated in a translation approved by the Foundation.
| | | | | |