見出し画像

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開発の過程で、sedgrepのようなテキスト処理ツールに演算機能を持たせた拡張ツールとして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で作成したグラフィックと音楽の生成ツールがパソコン雑誌(パソコン+)に掲載されました。

AWKはテキスト処理言語として非 常に優れたところがあり、UNIX や MS -DOSで汎用的に使える。 このため、 AWKを利用してプログラムを書いてい る人も多いのではないだろうか。
しかし、汎用的な言語である反面、 絵 や音楽を表現する命令が用意されていな い。 BASICなどでプログラムをつくっ たことがある人は、 AWKでも実現でき ないかと考えたかもしれない。 AWKでグラフィックやサウンド機能を実現するためには、いろいろな方法 があると思うが、ここではAWKの特徴 のひとつを利用した使い方を紹介しよう。 その特徴とは、 AWK が UNIX や MS -DOSの標準入出力を使っていることだ。 MS-DOSでは、標準出力を通常ディ スプレイに割り当てている。 DIR と入力 すると結果が画面に表示されるが、これ はDIR コマンドが結果を標準出力に書 き出しているからである。
標準出力は、 MS-DOSのリダイレク ト機能を使うと、ほかのデバイスへ切り 替えることができる。 たとえば「DIR > PRN」 とすれば、結果はプリンタへ出力 され、「DIR >ファイル名」とすれば、 結果をファイルに書き出すこともできる。 また、MS-DOSのパイプ機能を使え ば、「DIR SORT」 のように、 結果を ほかのコマンドの入力として利用することもできる。
AWK は結果を標準出力に書き出すので、テキスト処理言語としての特徴を 活かして、 グラフィックやサウンド用の 命令をテキストファイルとして書き出す。 そして、このテキストファイルを標準入 力から読み込んで、グラフィック機能や サウンド機能を実現するプログラムをつくれば、絵を描いたり音楽を演奏するこ とができそうだ。

パソコン+(1992年8月号)



この記事が気に入ったらサポートをしてみませんか?