編集AWK(オーク)は、プログラミング言語の一つ。一般的なプログラミングに用いることも可能である。UNIX上で開発された。sedやgrepのようなテキスト処理ツールに演算機能を持たせた拡張ツールとして開発された。簡単なスクリプトを記述することで効率的にテキストファイルを処理することを目的であった。その希望に応えて機能の拡張が行われた。テキスト処理だけに留まらず、開発者も予想しなかったような大規模なプログラミングに使われるような例もあらわれた。現在でもCSV形式のファイルを簡易に処理する、などの目的で広く使用されている。AWKは「オーク」と読み、「エー・ダブリュー・ケー」と読んではならないと著者らはしている[1]。Unix系OSないしPlan9における、AWKのインタプリタ処理系プログラム自体(他の多くのコマンドと同じく全て小文字である)を指してそうしていることがある。AWKのスクリプトは、パターンとアクションの組を並べた形になっている。実行を開始すると、まずBEGINパターンのアクションを実行する。レコードがパターンにマッチするかを調べ、パターンにマッチしたらそのパターンに対応するアクションを実行する。一致するパターンが複数ある時は、該当するアクションが上から順に全て実行される。これを入力が尽きるまで繰り返す。入力が尽きたら、ENDパターンのアクションを実行し、終了する。テキストストリームをシーケンシャルに読み込み、入力されるテキストストリームをレコードセパレータ毎に区切り、1行毎にスクリプトに記述されたアクションを順次実行する。扱われる)と文字列である。連想配列はファーストクラスではなく関数の返戻値にできないなどデータというよりは、配列変数という変種の変数があるといったような扱いである。連想配列の中身(要素)を連想配列にすることはできないため、ループするようなデータ構造を作ることは不可能。連想配列のキーに数値を使うと、文字列に変換したものがキーとなる。<control-001C>)をセパレータとして連結した文字列をキーとしてアクセスする。スクリプトの基本構成は次のようになる。終了時処理}BEGIN,ENDアクションは必須ではない。空行の数と「林檎」・「りんご」または「リンゴ」という文字列を含む行の数をそれぞれ出力するAWKプログラムを示す。