awk -fオプションの使い方を完全ガイド!初心者でもわかるLinuxテキスト処理の基本
生徒
「Linuxでテキストを自動で処理できるって聞いたんですが、awkって何ですか?」
先生
「awkは、ファイルの中身を行ごと・列ごとに読み取って加工できる便利なコマンドですよ。」
生徒
「コマンドに直接書くと長くなりそうで不安です…」
先生
「そんなときに使うのがawk -fオプションです。処理内容をファイルにまとめられます。」
1. awkコマンドとは?
awkコマンドは、Linuxでテキストファイルやデータを処理するための基本コマンドです。ログファイルの確認や、表形式データの加工によく使われます。
イメージとしては、ノートに並んだ表を見ながら「この列だけ読む」「計算する」といった作業を自動で行う道具です。
2. awk -fオプションの役割
-fオプションは、awkの処理内容をスクリプトファイルから読み込むための指定です。
短い処理ならコマンドに直接書けますが、長くなると読みにくくなります。-fを使うと、命令書を別ファイルに保存でき、整理しやすくなります。
3. awkスクリプトファイルを作ってみよう
まずは、簡単なawkスクリプトをファイルとして作成します。ここでは、各行の1列目を表示する処理を書きます。
cat << 'EOF' > sample.awk
{ print $1 }
EOF
$1は「1列目」という意味です。列とは、空白で区切られたデータのまとまりを指します。
4. awk -fでスクリプトを実行する
作成したスクリプトを-fオプションで指定して実行します。
awk -f sample.awk data.txt
apple 100
banana 200
orange 150
この例では、data.txtの各行から1列目だけが表示されています。
5. 条件付き処理もファイルに書ける
awkでは「条件に合う行だけ処理する」こともできます。次は、数値が150以上の行だけ表示します。
cat << 'EOF' > filter.awk
$2 >= 150 { print $1, $2 }
EOF
awk -f filter.awk data.txt
banana 200
orange 150
$2は2列目を表します。条件式も日本語の「もし〜なら」に近い感覚で書けます。
6. BEGINとENDを使った初期処理
BEGINは処理の最初、ENDは最後に一度だけ実行されます。見出しや合計表示によく使われます。
cat << 'EOF' > sum.awk
BEGIN { total = 0 }
{ total += $2 }
END { print "合計:", total }
EOF
awk -f sum.awk data.txt
合計: 450
7. awk -fを使うメリット
awk -fを使う最大の利点は、処理内容を再利用できることです。
- 長い処理でも読みやすい
- ファイルとして管理できる
- 複数のデータに同じ処理を使える
初心者でも、作業手順を分けることで理解しやすくなります。
8. awkと他のテキスト処理コマンドとの違い
grepは検索、sedは置換が得意ですが、awkは列ごとの計算や加工に向いています。
特に-fオプションを使うと、小さなプログラムのように扱えるため、データ処理の幅が広がります。