2024-03-26 オーク(AUK)
●LEAF 0954 オーク(AUK)
長年に渡ってオライリーの本と言えば、各種技術のガイドである「アニマルシリーズ」であった。カバーデザインは Edie Freedman によるもので、彼女は UNIX のプログラム名が「変な動物」の名前のようだと感じたことから、動物の図柄を用いたという。原画には、ドーヴァー出版の "Animals: 1,419 Copyright-Free Illustrations of Mammals, Birds, Fish, Insects, etc"(ISBN 0486237664)などのものを利用している。
私が最高のプログラミング言語だと思っている「AWK」のマニュアル本「Effective awk Programming」には海鳥のようなイラストが載っている。この鳥は「AUK」なのではないだろうか。
AWK(オーク)は、プログラミング言語の一つ。 テキストファイル、特に空白類(スペースの他、タブなど)やカンマなどで区切られたデータファイルの処理を念頭に置いた仕様となっているが、一般的なプログラミングに用いることも可能である。UNIX上で開発された。AWKは、ベル研究所におけるUNIX開発の過程で、sedやgrepのようなテキスト処理ツールに演算機能を持たせた拡張ツールとして1977年に開発された。そのため、UNIX上のユーティリティである sort の存在を前提としている。簡単なスクリプトを記述することで効率的にテキストファイルを処理することが目的であった。
当初はそれほど多くの機能は無かったが、普及するにつれ、さまざまな処理をAWKで実行したいと考えるユーザーが増え、その希望に応えて1985年に機能の拡張が行われた。その結果、汎用のプログラミング言語と比べても遜色が無いほどの機能を持つようになり、テキスト処理だけに留まらず、開発者も予想しなかったような大規模なプログラミングに使われるような例もあらわれた。一方、本来のテキスト処理用ツールとしても扱いやすく、現在でもCSV形式のファイルを簡易に処理する、などの目的で広く使用されている。
「AWK」という名称は、開発者であるアルフレッド・エイホ、ピーター・ワインバーガー、ブライアン・カーニハンの3人の苗字の頭文字を取って付けられたものであるが、AWKは「オーク」と読み、「エー・ダブリュー・ケー」と読んではならないと著者らはしている。
マニュアル「Effective awk Programming」は、今ではPDFなどでもダウンロードできます。
私は「AWK」が大好きで、テキストの処理をしたい時は必ずと言っていいほど「AWK」を使います。
例えばこんなプログラムを作って遊んだ(勉強した)時にも、当然のようにAWKを使いました。
HTMLではカラーの指定に140色の名前を使える。 この色を色の名前と一緒に表示するプログラムを「P5」で作ったことがある。
プログラムソースは、ここにあります。
どんな風にAWKを使ったのかのメモです。
このページをこれをコピペすると、こんな感じのテキストファイルができる。
[name.txt]
white
#FFFFFF
255 255 255
whitesmoke
#F5F5F5
245 245 245
ghostwhite
#F8F8FF
・・・・
・・・・
・・・・
indigo
#4B0082
75 0 130
awkで成形して一行にしてみます。これで、空白区切りのテキストデータができます。
カラー名 #RGB R G B
{
# print NR "," NR%3;
gsub("\r","")
if (NR%3==1){name=$1}
if (NR%3==2){hex=$1}
if (NR%3==0){print name, hex, $0}
}
[color.txt]
white #FFFFFF 255 255 255
whitesmoke #F5F5F5 245 245 245
ghostwhite #F8F8FF 248 248 255
・・・・
・・・・
・・・・
indigo #4B0082 75 0 130
color.txt を整形して、カラー名のリストも作っておきます。配列に名前を入れる時に便利です。
BEGIN{
set=""
}
{
set=set " " $1
}
END{
print set
}
[cname.txt]
ivory beige lightyellow lightgoldenrodyellow lemonchiffon floralwhite oldlace cornsilk papayawhite blanchedalmond bisque snow linen antiquewhite seashell lavenderblush mistyrose gainsboro lightgray lightsteelblue lightblue lightskyblue powderblue paleturquoise skyblue mediumaquamarine aquamarine palegreen lightgreen khaki palegoldenrod moccasin navajowhite peachpuff wheat pink lightpink thistle plum silver darkgray lightslategray slategray slateblue steelblue mediumslateblue royalblue blue dodgerblue cornflowerblue deepskyblue cyan aqua turquoise mediumturquoise darkturquoise lightseagreen mediumspringgreen springgreen lime limegreen yellowgreen lawngreen chartreuse greenyellow yellow gold orange darkorange goldenrod burlywood tan sandybrown darksalmon lightcoral salmon lightsalmon coral tomato orangered red deeppink hotpink palevioletred violet orchid magenta fuchsia mediumorchid darkorchid darkviolet blueviolet mediumpurple gray mediumblue darkcyan cadetblue darkseagreen mediumseagreen teal forestgreen seagreen darkkhaki peru crimson indianred rosybrown mediumvioletred dimgray black midnightblue darkslateblue darkblue navy darkslategray green darkgreen darkolivegreen olivedrab olive darkgoldenrod chocolate sienna saddlebrown firebrick brown maroon darkred darkmagenta purple indigo
私は、AWKをMS-DOSの時代から使っています。当時使っていたAWKはMS-DOS版の「JGAWK」です。
1992年(平成4)には、私がAWKで作成したグラフィックと音楽の生成ツールがパソコン雑誌(パソコン+)に掲載されました。