コピーしました!
文字列のawk

awkコマンド徹底解説

awkとは?

awkとは、Linux/Unix環境でテキストデータの抽出や加工、集計を効率的に行うためのスクリプト言語(コマンド)です

参考:GNU awk

この記事で解決できること

この記事ではawkコマンドを以下の8つに分けて解説しています

  1. 条件分岐・制御構文
  2. 関数・処理系
  3. 文字列処理・正規表現
  4. フィールド・レコード関連
  5. 配列・データ構造
  6. 変数・スクリプト
  7. 他コマンドとの比較・連携
  8. データ分割

各見出しの先頭に基本動作を確認できるコードと結果を配置しているので、動作確認が簡単にできます

詳しい動作を知りたい方はリンクを辿ってください

条件分岐・制御構文

awk ifの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 cherry 150 EOF

実行コマンド

awk '{ if ($2 > 150) print $1, $2 }' input.txt

実行結果

banana 200

awk ifの詳細

awkとifで始めるテキスト処理入門

awk beginの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 300 EOF

実行コマンド

awk 'BEGIN { print "=== 開始処理 ===" } { print "商品:", $1, "価格:", $2 } END { print "=== 終了処理 ===" }' input.txt

実行結果

=== 開始処理 ===
商品: apple 価格: 100
商品: banana 価格: 200
商品: orange 価格: 300
=== 終了処理 ===

awk beginの詳細

awk BEGINブロック完全ガイド:変数初期化から集計パターンまで解説

関数・処理系

awk functionの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 150 EOF

実行コマンド

awk ' function add_tax(price) { return price * 1.1 } { taxed = add_tax($2) print $1, taxed } ' input.txt

実行結果

apple 110
banana 220
orange 165

awk functionの詳細

awkのfunctionを理解して効率的なテキスト処理を実現するための実践ガイド

awk printfの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 150 EOF

実行コマンド

awk '{printf "%s : %d\n", $1, $2}' input.txt

実行結果

apple : 100
banana : 200
orange : 150

awk printfの詳細

awkとprintfを理解してデータ整形を自在に操る入門ガイド

awk getlineの基本構文

ファイル作成

cat << 'EOF' > input.txt line1 line2 line3 EOF

実行コマンド

awk '{ print "現在行:", $0 if (getline next_line) { print "getline取得:", next_line } }' input.txt

実行結果

現在行: line1
getline取得: line2
現在行: line3

awk getlineの詳細

awkのgetlineを理解するための実践ガイドと安全な使い方

文字列処理・正規表現

awk matchの基本構文

ファイル作成

cat << 'EOF' > input.txt Hello 123 World abc456def no numbers here EOF

実行コマンド

awk '{ if (match($0, /[0-9]+/)) print $0, "-> RSTART=" RSTART ", RLENGTH=" RLENGTH }' input.txt

実行結果

Hello 123 World -> RSTART=7, RLENGTH=3
abc456def -> RSTART=4, RLENGTH=3

awk matchの詳細

awkのmatch関数を使いこなす実践ガイド

awk subの基本構文

ファイル作成

cat << 'EOF' > input.txt apple orange apple banana apple grape EOF

実行コマンド

awk '{ sub("apple","APPLE"); print }' input.txt

実行結果

APPLE orange apple
banana APPLE grape

awk subの詳細

awkのsub関数を理解する入門ガイド

awk gsubの基本構文

ファイル作成

cat << 'EOF' > input.txt apple orange apple grape EOF

実行コマンド

awk '{ gsub("apple", "banana"); print }' input.txt

実行結果

banana orange banana grape

awk gsubの詳細

awkのgsubを徹底解説 初心者でも理解できる文字列置換の基本から応用

awk substrの基本構文

ファイル作成

cat << 'EOF' > input.txt Hello,awk,substr,function EOF

実行コマンド

awk '{ print substr($0,1,5) }' input.txt

実行結果

Hello

awk substrの詳細

awkのsubstr関数を使いこなす実践ガイド

awk 正規表現の基本構文

ファイル作成

cat << 'EOF' > input.txt apple 123 banana 456 cherry_789 grape-001 EOF

実行コマンド

awk '/[a-z]+ [0-9]+/' input.txt

実行結果

apple 123
banana 456

awk 正規表現の詳細

awkと正規表現の基礎から理解する入門ガイド

フィールド・レコード関連

awk nfの基本構文

ファイル作成

cat << 'EOF' > input.txt apple orange banana cat dog red blue green yellow EOF

実行コマンド

awk '{print NF}' input.txt

実行結果

3
2
4

awk nfの詳細

awkとnfを理解してデータ処理を自在に操るための実践ガイド

awk nrの基本構文

ファイル作成

cat << 'EOF' > input.txt apple banana cherry EOF

実行コマンド

awk '{print NR, $0}' input.txt

実行結果

1 apple
2 banana
3 cherry

awk nrの詳細

awkとnrを理解して行処理を自在に操るための入門ガイド

awk fsの基本構文

ファイル作成

cat << 'EOF' > input.txt apple,100,red banana,200,yellow grape,300,purple EOF

実行コマンド

awk -F',' '{print $1, $2, $3}' input.txt

実行結果

apple 100 red
banana 200 yellow
grape 300 purple

awk fsの詳細

awkで理解するfsの基本と応用テクニック入門

awk ofsの基本構文

ファイル作成

cat << 'EOF' > input.txt apple orange banana dog cat mouse EOF

実行コマンド

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

実行結果

apple,orange,banana
dog,cat,mouse

awk ofsの詳細

awkとOFSの仕組みを理解して自在に区切り文字を操る方法

awk field separatorの基本構文

ファイル作成

cat << 'EOF' > input.txt apple orange banana cat dog mouse one two three EOF

実行コマンド

awk '{print $1, $2, $3}' input.txt

実行結果

apple orange banana
cat dog mouse
one two three

awk field separatorの詳細

awkでfieldとseparatorを理解する実践入門ガイド

配列・データ構造

awk arrayの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 apple 150 orange 300 banana 50 EOF

実行コマンド

awk '{ arr[$1] += $2 } END { for (key in arr) print key, arr[key] }' input.txt

実行結果

apple 250
banana 250
orange 300

awk arrayの詳細

awkでarrayを基礎から理解するための入門ガイド

変数・スクリプト

awk variableの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 300 EOF

実行コマンド

awk '{ total += $2 } END { print total }' input.txt

実行結果

600

awk variableの詳細

awkのvariableを基礎から理解するための完全ガイド

awk scriptの基本構文

ファイル作成

cat << 'EOF' > input.txt apple banana cherry EOF

ファイル作成

cat << 'EOF' > script.awk BEGIN { print "=== awk script start ===" } { print NR ":" $0 } END { print "=== awk script end ===" } EOF

実行コマンド

awk -f script.awk input.txt

実行結果

=== awk script start ===
1:apple
2:banana
3:cherry
=== awk script end ===

awk scriptの詳細

awkとscriptで学ぶテキスト処理入門ガイド

他コマンドとの比較・連携

awk sedの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 300 EOF

実行コマンド

awk '{ print $1, $2 }' input.txt

実行結果

apple 100
banana 200
orange 300

実行コマンド

sed 's/ / : /' input.txt

実行結果

apple : 100
banana : 200
orange : 300

awk sedの詳細

awkとsedを基礎から学ぶテキスト処理入門

awk grepの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 100 banana 200 orange 150 apple 300 grape 120 EOF

実行コマンド

awk '{print $1, $2}' input.txt

実行結果

apple 100
banana 200
orange 150
apple 300
grape 120

実行コマンド

grep "apple" input.txt

実行結果

apple 100
apple 300

awk grepの詳細

awkとgrepを基礎から学ぶ実践ガイド

awk sortの基本構文

ファイル作成

cat << 'EOF' > input.txt apple 300 orange 150 banana 200 grape 180 apple 120 EOF

実行コマンド

awk '{ print $1, $2 }' input.txt

実行結果

apple 300
orange 150
banana 200
grape 180
apple 120

実行コマンド

sort input.txt

実行結果

apple 120
apple 300
banana 200
grape 180
orange 150

awk sortの詳細

awkとsortの使い方を初心者向けに解説する基本ガイド

データ分割

awk splitの基本構文

ファイル作成

cat << 'EOF' > input.txt apple,orange,banana EOF

実行コマンド

awk '{ split($0, fruits, ",") print fruits[1] print fruits[2] print fruits[3] }' input.txt

実行結果

apple
orange
banana

awk splitの詳細

awkのsplit関数の使い方を初心者向けにわかりやすく解説

まとめ

この記事では以下の8つの項目に分けてawkコマンドを解説しました

  1. 条件分岐・制御構文
  2. 関数・処理系
  3. 文字列処理・正規表現
  4. フィールド・レコード関連
  5. 配列・データ構造
  6. 変数・スクリプト
  7. 他コマンドとの比較・連携
  8. データ分割

awkの基本設計から高度なテキスト加工、他コマンドとの連携にいたるまでの強力なデータ処理能力を網羅的に解説しました。

awkは単なるテキストフィルターに留まらず、制御構文や動的配列、豊富な組み込み関数を備えた、極めて完成度の高い「プログラミング言語」です。

各見出しで紹介したテクニックを活用することで、肥大化するログの集計や複雑なデータ分割といった日々のトラブルシューティングを、1行のスクリプト(ワンライナー)で効率化できるようになりましょう。

awk以外のコマンド記事

awkコマンド以外にもコマンドの記事を扱っています

よろしければご覧ください

ターナーのrunning terminal commands

©︎ 2025-2026 running terminal commands