他に文字列をキーとした連想配列があるが、連想配列はファーストクラスではなく関数の返戻値にできないなどデータというよりは、配列変数という変種の変数があるといったような扱いである。連想配列の中身（要素）を連想配列にすることはできないため、ループするようなデータ構造を作ることは不可能。連想配列のキーに数値を使うと、文字列に変換したものがキーとなる。
のようにして多次元配列のように見えるアクセスもできるが、実際には各次元を必要であればまず文字列化した後に、グローバル変数の文字列（デフォルトでは）をセパレータとして連結した文字列をキーとしてアクセスする。
スクリプトの基本構成は次のようになる。
，アクションは必須ではない。
例として、テキストファイル内の全ての行のうち、空行の数と「林檎」・「りんご」または「リンゴ」という文字列を含む行の数をそれぞれ出力するAWKプログラムを示す。
なお、AWKでは、まだ代入されていない変数は暗黙のうちにまたはで初期化されると仮定してよいので、上の例でのブロックは必須ではない。
パターンには以下のように開始と終了を定義するパターンもある。
変数.
AWKの特徴の一つとして変数が型を持たないことが挙げられる。変数宣言が不要で、プログラム中で使用される変数は暗黙のうちに初期化される。このため、未定義変数や未初期化変数を参照することによるエラーはAWKには存在しない。
AWKは算術演算のような数値を必要とする文脈では暗黙に値を数値に変換し、逆に文字列を必要とする場合には文字列に変換する。
例えば、
のような例では、およびの値はになる。
こうした暗黙の変換は便利であると同時に、利用者の意図しない結果を生むこともある。
関数.
AWKでは、関数を定義して使用することが可能である。
関数の定義は次のようになる。
AWKの変数は、引数を除いて全て大域変数であり、局所のスコープを持つのは引数として宣言された変数だけである。このため、技法として、関数定義で余分な引数を宣言し、それを局所変数として使う、ということが行なわれる。AWKでは、関数の呼び出し時に、実引数の個数が仮引数の個数より少なくても、省略とみなしエラーとしない。これを利用して、余分な引数を局所変数として使うのである。
また、関数は再帰呼び出しもできる。
制御構造.