awk [-F 区ぎり記号] [-v awk変数=値] 'awkプログラム' [入力ファイル...] awk [-F 区ぎり記号] [-v awk変数=値] -f awkプログラム [入力ファイル...]
	BEGIN{
		[ アクション ]
	}
	[ /パターン/ ]{
		[ アクション ]
	}
	END{
		[ アクション ]
	}
awk は入力ファイルから指示されたパターンに一致した行に対し、そこに記述された
種々の処理(アクションと呼びます)を行い、結果を標準出力に吐き出します。入力した行は、区切り記号で分割し、それらを $1〜n として参照できます。 $0 は分割していない入力行全てを顕し、区切り文字の省略値は「空白かタブ」です。
| 変数名 | 意味 | 
|---|---|
| FILENAME | 処理中のファイル名 | 
| NR | 処理中の行数 | 
| FNR | 処理中の行数(ファイル毎の) | 
| NF | 処理中の項目数($1..$NF,最大99) | 
awk は常に処理対象となるファイルを読み込み、指定されたパターンを含む行を発見した時に予め指定された処理を行います。
よって awk プログラムの文法は以下のように、パターンとアクションの組合せになります。
	パターン { アクション }
	function 関数(引数..) { 文 }	... これに付いては後述
パターンには正規表現を用ることができますし、特別なパターンとしてBEGIN、ENDがあります。
	BEGIN{ ファイルオープン時に行う処理 }
	/^#/{  先頭がシャープで始まる行に付いての処理 }
	END{ ファイル終了時に行う処理 }
awk プログラムは3種類の記述方法があります。
$ awk 'BEGIN{print "length\tdata\n------\t----"}{print length($0),"\t",$0}' /etc/hosts
length  data
------  ----
25       127.0.0.1      localhost
41       192.168.80.36  server36.abc.ne.jp        server36
例) (1)と同じプログラムを別ファイルとして予め作成し、実行する
$ cat test.awk
BEGIN{
        print "length\tdata"
        print "------\t----"
}
{
        print length($0),"\t",$0
}
$ awk -f test.awk /etc/hosts
	# 実行結果は(1)と同じ
例) (2)と同じプログラムに起動オプションを付加
$ cat test.awk
#! /bin/gawk -f
BEGIN{
        print "length\tdata"
        print "------\t----"
}
{
        print length($0),"\t",$0
}
$ test.awk /etc/hosts
	# 実行結果は(1)と同じ