名前 | 形式 | 機能説明 | オプション | 使用法 | 使用例 | 環境 | 属性 | 関連項目 | 注意事項
/usr/xpg4/bin/awk ユーティリティについては nawk(1) のマニュアルページで説明しています。
/usr/bin/awk ユーティリティは、filename で指定したファイルを走査し、prog で指定したパターンのいずれかと一致する行を探します。prog は、シェルと区別できるように単一引用符 (') で囲みます。 prog で示される各パターンとともに、filename 内に一致する行が見つかったときに実行される アクション (動作) を記述することができます。 一連のパターン–アクション文は prog に直接書いても良く、-f progfile オプションで示されるファイル内に指定してもかまいません。 ファイルは順番に読み込まれます。ファイルが指定されないときは、標準入力が使用されます。ファイル名 '–' は標準入力を意味します。
次のオプションを使用できます。
awk は progfile から読み込んだ一連のパターンを使用します。
フィールドセパレータとして c を使用します。下記の FS の説明を参照してください。
各行は、各パターン–アクション文のパターン部分と 比較されます。一致すると、関連するアクションが実行されます。 var=value の形式の filename はファイル名ではなく変数の割り当てとみなされ、 その場合には、そのファイルがオープンされるであろう 時点で行われます。 この方法によって割り当てられた変数は BEGIN パターンのルール内では使用できず、以前に 指定されたファイルがすべて読み込まれた後で割り当てられます。
入力行は通常、 空白で区切られたフィールドで構成されています (このデフォルト値は -Fc オプションまたは FS 組み込み変数を使用して変更できます。下記参照 ) 。 デフォルトでは先行する空白文字を無視し、 空白文字またはタブ、あるいはその両方でフィールドを区切るようになっています。 なお、変数 FS に空白を含まない値が代入されていると、 先行空白文字を無視しません。 フィールドは $1 、 $2 、 . . . のように表され、 $0 は全行を意味します。
expression relop expression expression matchop regular_expression
ここで、relop とは C 言語の 6 つの関係演算子のうちのどれかで、matchop とは ~ (含む) または !~ (含まない) のいずれかを示します。expression とは、数値演算式、関係演算式、配列中の変数 (var in array)、またはこれらを論理演算で組み合わせたものです。
var in array
egrep(1) と同様、正規表現はスラッシュで囲まれていなければなりません。パターン内の独立した正規表現はその行すべてに適用されます。正規表現は関係式の中にも現われます。パターンは、コンマで区切られた 2 つのパターンからなることもあります。この場合、関連するアクションは、最初のパターンが一致した行と 2 番目のパターンが一致した行の間にあるすべての行に対して実行されます。
BEGIN と END は特殊なパターンで、最初の行を読む前と最後の行を読んだ後に制御を確保するのに使用します。この 2 つの特殊パターンは他のパターンと組み合わせて使うことはできません。
組み込み変数には次のものがあります。
現入力ファイル名
入力フィールドセパレータの正規表現 (デフォルトは空白文字とタブ)
現レコード中のフィールド数
現レコード番号
数値の出力形式 (デフォルトは %.6g)
出力フィールドセパレータ (デフォルトは空白文字)
出力レコードセパレータ (デフォルトは復帰改行文字)
入力レコードセパレータ (デフォルトは復帰改行文字)
アクションは一連の文です。 使用できる文は次のうちのいずれかです。
if ( expression ) statement [ else statement ] while ( expression ) statement do statement while ( expression ) for ( expression ; expression ; expression ) statement for ( var in array ) statement break continue { [ statement ] . . . } expression # 一般に variable = expression print [ expression-list ] [ >expression ] printf format [ , expression-list ] [ >expression ] next # この行の残りのパターンをスキップする exit [expr] # 残りの入力をスキップする。終了ステータスは expr
上記において、 statement は文を、 expression は式を、 expression-list は式のリストを、 variable は変数を、 conditional は条件を、 format は書式をそれぞれ表します。
文は、セミコロン、復帰改行、 右かっこのうちのいずれかで終了します。 式のリストが空の場合は入力行全体を意味します。 式は、文字列または数字と + 、 – 、 * 、 / 、 % 、 ‸ 、および連結 (空白文字で示される) の各演算子で構成されます。 C の演算子 ++ 、 –– 、 += 、 –= 、 *= 、 /= 、 %= 、 ‸= 、 >, 、 >= 、 < 、 <= 、 == 、 != 、 ?: も式の中に記述できます。 変数は、スカラー、配列要素 (x[i] で表される) またはフィールドです。変数は NULL 値または 0 で初期化されます。 配列の添字は、必ずしも数字である必要はなく、文字列でもかまいません。これによって、ある種の連想記憶形式を使用できます。 文字列定数は、二重引用符 ("") で囲みます。C のエスケープ文字はエスケープとして認識します。
print 文はその引数を標準出力に出力します。>expression が指定されたときはファイルへ、 '|cmd' が指定されたときはパイプへ出力します。出力は、現在の出力フィールドセパレータで区切られた各引数を持つ、出力レコードセパレータで終了します。printf 文は、その書式に従って式のリストの書式を定めます。(printf(3C)参照)。
演算関数は次の通りです。
x をラジアン単位として x の余弦を返します。(/usr/xpg4/bin/awk のみ。nawk(1) のマニュアルページを参照)
x をラジアン単位として x の正弦を返します。(/usr/xpg4/bin/awk のみ。nawk(1) のマニュアルページを参照)
x の指数関数を返します。
x の自然対数を返します。
x の平方根を返します。
引数を切り捨てて、整数にします。 つまり x が 0 よりも大きい場合は、 0 に向かって切り捨てます。
文字列関数は次の通りです。
文字列 s の中で 文字列 t が最初に出現する位置を返します。 出現しなければ 0 を返します。
整数値になるよう、 s を切り捨てます。 s が指定されていなければ、 $0 が使われます。
引数を文字列として解釈しその長さを返します。 引数がない場合は行全体を返します。
文字列 s を a[1] 、 a[2] 、 . . . a[n] の配列要素に分割し、値 n を返します。この分割は、正規表現 fs によって行われ、 fs が指定されていない場合は フィールドセパレータ FS によって行われます。
fmt で指定した printf(3C) 形式に従って式の書式を定め、 その結果得られた文字列を返します。
文字列 s 内の m 番目から始まる長さ n の部分文字列を返します。
出入力用の関数は次の通りです。
$0 に、現入力ファイルの次のレコードを 設定します。 getline 関数は正常終了時には 1 を、ファイルの終わりに達すると 0 を、またエラー発生時には –1 を返します。
ファイルが 2 ギガバイト ( 231 バイト) 以上ある場合の awk の動作については、 largefile(5) を参照してください。
length > 72 |
{ print $2, $1 } |
BEGIN { FS = ",[ \t]*|[ \t]+" } { print $2, $1 } |
{ s += $1 } END { print "sum is", s, " average is", s/NR } |
{ for (i = NF; i > 0; --i) print $i } |
/start/, /stop/ |
$1 != prev { print; prev = $1 } |
/Page/ { $2 = n++; } { print } |
このプログラムが prog のファイルに記録されている場合、 以下のコマンドは 5 ページから始まるページ番号で input ファイルを出力します。
awk f prog n=5 input |
awk の実行に影響を与える環境変数 LC_CTYPE
、 LC_MESSAGES
についての詳細は、 environ(5) を参照してください。
数値入力の解釈、数値と文字列との変換、数値出力のフォーマットに用いる、小数点文字を決定します。awk プログラム (コマンド行引数で指定される代入も含む) の処理で認識される小数点文字は、ロケールに関係なくピリオド (POSIX ロケールの小数点文字) です。
次の属性については attributes(5) のマニュアルページを参照してください。
入力行に空白が含まれる場合、出力時に保証されません。 数値と文字の間の明示的な変換は行われません。 式を数値として扱いたい場合は 0 を加え、文字として扱いたい場合は NULL 文字列 ("") を連結してください。