awk
は強力なテキスト処理ツールで、テキストファイルや標準入力からデータを抽出したり操作したりするために使用されます。以下に、実践的な awk
の使い方のいくつかを示します。
基本的な使い方
1. 特定の列を表示する
awk '{print $1}' filename
これは、ファイル filename
の各行の最初の列を表示します。
2. 区切り文字を指定して特定の列を表示する
awk -F":" '{print $1, $3}' /etc/passwd
/etc/passwd
ファイルをコロンで区切り、第1列と第3列を表示します。
3. 条件に基づいて行をフィルタリングする
awk '$3 > 1000' /etc/passwd
第3列の値が1000より大きい行を表示します。
高度な使い方
4. 合計を計算する
awk '{sum += $1} END {print sum}' filename
ファイル filename
の第1列の合計を計算して表示します。
5. 平均を計算する
awk '{sum += $1; count += 1} END {print sum / count}' filename
第1列の平均値を計算して表示します。
6. 条件付きで合計を計算する
awk '$2 == "category" {sum += $3} END {print sum}' filename
第2列が “category” である行の第3列の合計を計算して表示します。
7. パターンに一致する行をカウントする
awk '/pattern/ {count++} END {print count}' filename
パターン “pattern” に一致する行の数をカウントして表示します。
8. 特定のフィールドを含む行を抽出する
awk '$2 == "value"' filename
第2列が “value” である行を表示します。
9. フィールドの値を置換する
awk '{gsub(/old/, "new"); print}' filename
各行のフィールド内の “old” を “new” に置換して表示します。
複雑な例
10. テーブルの集計
awk -F"," '{arr[$1]+=$2} END {for (i in arr) print i, arr[i]}' filename.csv
CSVファイル filename.csv
の第1列をキー、第2列を値として、キーごとに値を集計して表示します。
11. 列の再フォーマット
awk '{print $3, $2, $1}' filename
第3列、第2列、第1列の順にフィールドを再フォーマットして表示します。
12. 複数条件のフィルタリング
awk '$1 > 100 && $2 == "status"' filename
第1列が100より大きく、第2列が “status” である行を表示します。
まとめ
awk
は非常に強力で柔軟なツールで、テキスト処理やデータ解析において多くの場面で役立ちます。上記の例はその一部に過ぎません。awk
の詳細については man awk
コマンドを使用してマニュアルページを参照することをお勧めします。
コメント