awk – テキスト処理・抽出用のパターン指向言語

集計・統計
スポンサーリンク

awk コマンドは、テキストファイルを行ごとに処理し、条件に一致した行から指定フィールドを抽出・加工できる強力なコマンドです。
実務では、ログファイルから特定カラムを抽出したり、数値計算やレポート生成に利用されます。

構文(Syntax)

awk 'パターン { アクション }' [FILE...]

または

awk -f SCRIPT.awk [FILE...]

主なオプション一覧

オプション説明使用例
-F FS入力フィールド区切り文字を指定(デフォルトは空白)awk -F, '{print $1}' data.csv
-f FILEawk スクリプトファイルを読み込むawk -f script.awk data.txt
-v VAR=VALawk 内で使う変数を事前に定義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 系では機能差がある場合があります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント