ホーム > テキスト処理・検索 > awk

awk クイックガイド

テキストストリームをレコードとフィールド単位で処理し、フィルタリング、変換、集計を行うストリーム処理ツールです。GNU awk (gawk) を基準とした一般的なオプションと代表的なパターンをまとめました。

概要

awkは入力をレコード(デフォルト:行)として読み込み、フィールド区切り文字(FS)で分割した後、パターン/アクション { ... } を適用して、希望する出力(OFS)を出力します。一般的な活用法としては、列の抽出、条件フィルタ、合計/平均計算、フォーマット変換などがあります。

主要な組み込み変数

入出力動作と書式を制御する代表的な組み込み変数です。

  • NR: これまでに読み込まれたレコード(行)番号
  • FNR: 現在のファイルにおけるレコード番号
  • NF: 現在のレコードのフィールド数
  • FS: 入力フィールド区切り文字(デフォルトは空白)
  • OFS: 出力フィールド区切り文字(デフォルトは空白)
  • RS: レコード区切り文字(デフォルトは改行)
  • ORS: 出力レコード区切り文字(デフォルトは改行)

基本形式

awk '패턴 { 액션 }' input.txt
awk -f program.awk input.txt

パターン/アクションブロックを1行で渡すか、-fでスクリプトファイルを渡します。

主要オプション

実務でよく使われるオプションを状況別にまとめました。gawk互換オプションも含まれます。

1) 基本実行/入力

2) フィールド/変数渡し

3) デバッグ/互換性(gawk)

4) ヘルプ/バージョン

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`awk` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

よく使うパターン

列の抽出

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

コロンで区切られた1番目と3番目のフィールドのみを出力

条件フィルタ

awk '$5 > 100 { print }' data.tsv

5番目のフィールドの値が100より大きいレコードのみを出力

集計例

awk '{ sum += $2 } END { print sum }' data.txt

2番目の列の合計

変数の渡しとフォーマット

awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt

OFSをカンマに指定し、特定のキーのみを出力

実用的なヒント

1行ずつのストリーム処理なので、パイプとの組み合わせが強力です。

  • フィールド区切り文字に正規表現が使用可能: -F '[,:\t]+'
  • 複数の-eでプログラムをパートごとに記述可能
  • 長いスクリプトは-fで分割し、gitでバージョン管理
  • 出力フォーマットはOFS/ORSを適切に調整
  • 大量の入力では、必要な最小限の作業のみを残し、パイプラインを簡素化

関連するコマンド

機能的に類似しているか、よく一緒に使われるコマンドです。



同じカテゴリのコマンド