No.051テキスト処理

awk

オーク・テキスト処理言語

知識レベル 実践注意一般ユーザーで使える別名 gawk別名 mawk別名 nawk

入力をレコードとフィールドとして扱い、条件に合う行だけへ処理を適用できます。抽出、整形、集計、計算まで一つでこなせます。

答えよく使う形

  1. 先頭列の抽出が簡単です
  2. 入力フィールド区切りを指定します
  3. awk内で使う変数を事前設定します

注意危険度は中程度です。

visitor@goodly: ~

$ awk -F ':' '{print $1}' /etc/passwd | head -n 3

root
daemon
bin

$ awk '{print $1}' file.txt

$ awk -F ':' '{print $1,$7}' /etc/passwd

どんなコマンド?

こんなときに

列単位の抽出、条件付き表示、簡易集計、書式整形を一度に行いたい時に使います。

awkは、入力を行と列として扱い、条件と動作を組み合わせて処理するコマンドです。単純な列抽出だけでなく、合計値計算、条件分岐、書式付き出力まで行えるため、テキスト処理の要です。

cutやgrepより表現力が高く、sedより列意識が強いのが特徴です。たとえば『3列目が100以上の行だけ表示する』『1列目ごとに件数を数える』といった処理を簡潔に書けます。

一方で、書けることが多い分だけ可読性が落ちやすいので、短いワンライナーで済む範囲と、スクリプト化したほうが良い範囲を見極めることも重要です。

書き方とオプション

組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。

$ awk

使用例と実行結果

行を押すとコピーできます。

root
daemon
bin
先頭列の抽出が簡単です。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 1

つまずいたとき

数値比較のつもりが文字列比較になった

原因データの形や式を誤解しています。

こうする対象列の内容を確認し、必要なら数値変換や比較条件を見直します。

区切りが想定と違う

原因-F指定が不足しています。

こうする元データの区切り文字を確認して-Fで明示します。

終わったときの数(戻り値)

$ echo $?

  • 0正常終了。処理に成功しました。
  • >0構文誤り、読取失敗などで失敗しました。

気をつけることと入れ方

気をつけること

危険度は中程度です。式が複雑になると読み手が理解しづらく、誤集計の原因になります。列番号、区切り、数値比較を明示して書くのが安全です。

環境による違い

POSIX awkとGNU awkでは拡張機能が異なります。基本的な列処理は共通ですが、高度な関数や拡張構文は環境差に注意が必要です。

確かめた環境2026-04-09 に確認

よくある質問

cutよりawkを使うべきなのはどんな時ですか。

条件分岐、計算、複数列の整形が必要ならawkが向いています。

資格試験では

  • LinuC レベル1関係1.03系 GNUとUnixのコマンドawkは、LinuCレベル1のテキスト処理周辺知識として学ぶ価値があります。
  • LPIC-1関係103系 GNUとUnixのコマンドawkは、LPIC-1のテキスト処理や自動化の周辺知識として有用です。
  • 共通基礎大事Linuxコマンド基礎

awk を最後まで読みました。

Linux コマンド辞典に戻る2 / 144

Goodly のメニュー