awk オーク

英語表記awk

日本語表記テキスト処理言語

別名gawk, mawk, nawk

正式名称awk

危険度注意

What does it mean?

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

Command Quest

awk を今日の道具にする

入力をレコードとフィールドとして扱い、条件に合う行だけへ処理...

$ awk [オプション] 'プログラム' [ファイル]...
関連用語4
次のコマンド0
FAQ1
参照3

概要

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

基本構文

awk [オプション] 'プログラム' [ファイル]...

詳細解説

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

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

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

このコマンドを使う場面

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

まず安全に試す方法

1. printf 'alice:1001nbob:1002n' > users.txt
2. awk -F ':' '{print $1,$2}' users.txt
3. awk -F ':' '$2 > 1001 {print $1}' users.txt

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. -F ':'で区切りを指定し、1列目と7列目を表示します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03系 GNUとUnixのコマンド
    根拠: editorial
    awkは、LinuCレベル1のテキスト処理周辺知識として学ぶ価値があります。
  • LPIC-1
    範囲: 103系 GNUとUnixのコマンド
    根拠: editorial
    awkは、LPIC-1のテキスト処理や自動化の周辺知識として有用です。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    awkは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -F 区切り文字列
    入力フィールド区切りを指定します。
    awk -F ':' '{print $1}' /etc/passwd
  • -v 変数=値
    awk内で使う変数を事前設定します。
    awk -v limit=100 '$3 >= limit' data.txt

実行結果サンプル

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

戻り値コード

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

使用例

  • awk '{print $1}' file.txt
  • awk -F ':' '{print $1,$7}' /etc/passwd
  • awk '$3 >= 100 {sum += $3} END {print sum}' data.txt

よくあるエラー

  • 数値比較のつもりが文字列比較になった
    原因: データの形や式を誤解しています。
    対処: 対象列の内容を確認し、必要なら数値変換や比較条件を見直します。
  • 区切りが想定と違う
    原因: -F指定が不足しています。
    対処: 元データの区切り文字を確認して-Fで明示します。

導入・互換性情報

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

注意点 / セキュリティリスク

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

FAQ

  • Q. cutよりawkを使うべきなのはどんな時ですか。
    A. 条件分岐、計算、複数列の整形が必要ならawkが向いています。

関連用語

  • GNU
  • ソースコード
  • 標準入力
  • パイプ

参照リンク

関連記事