awk コマンドは、テキストファイルを行ごとに処理し、条件に一致した行から指定フィールドを抽出・加工できる強力なコマンドです。
実務では、ログファイルから特定カラムを抽出したり、数値計算やレポート生成に利用されます。
構文(Syntax)
awk 'パターン { アクション }' [FILE...]
または
awk -f SCRIPT.awk [FILE...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-F FS | 入力フィールド区切り文字を指定(デフォルトは空白) | awk -F, '{print $1}' data.csv |
-f FILE | awk スクリプトファイルを読み込む | awk -f script.awk data.txt |
-v VAR=VAL | awk 内で使う変数を事前に定義 | awk -v limit=100 '$3 > limit {print $1}' data.txt |
実行例
ファイルの1列目を表示
awk '{print $1}' data.txt
出力例:
Alice
Bob
Charlie
CSVファイルの2列目を表示
awk -F, '{print $2}' data.csv
出力例:
25
30
28
条件に一致した行を表示
awk '$3 > 80 {print $1, $3}' scores.txt
出力例:
Alice 90
Charlie 85
合計値を計算
awk '{sum += $2} END {print sum}' sales.txt
出力例:
450
平均値を計算
awk '{sum += $2; count++} END {print sum/count}' sales.txt
出力例:
75
ヘッダーを除外して処理
awk 'NR > 1 {print $1, $2}' data.txt
複雑な処理(if文利用)
awk '{if ($3 >= 60) print $1 " PASS"; else print $1 " FAIL"}' scores.txt
出力例:
Alice PASS
Bob FAIL
Charlie PASS
エラー例(存在しないファイルを指定)
awk '{print $1}' missing.txt
出力例:
awk: fatal: cannot open file 'missing.txt' for reading: No such file or directory
関連コマンド
sed: テキスト置換・編集grep: パターン検索cut: 特定フィールドの切り出しsort: データの並び替えuniq: 重複行の削除
備考
- デフォルトのフィールド区切りは空白やタブですが、
-Fで任意の区切り文字に変更可能です。 BEGINブロックとENDブロックを使えば、前処理や後処理も記述可能です。- GNU awk(gawk)が一般的ですが、BSD 系では機能差がある場合があります。
参考
- manページ: man7.org awk(1)
- GNU Awk: https://www.gnu.org/software/gawk/

コメント