sedとawkはLinuxのテキスト処理において最も強力なツールです。ログ解析・設定ファイルの編集・データ抽出など幅広い場面で活躍します。
sedの基本:テキストの置換
# 基本の置換
sed 's/apple/orange/' fruits.txt
# 行の全置換(gフラグ)
sed 's/apple/orange/g' fruits.txt
# ファイルを直接書き換え
sed -i 's/old/new/g' config.txt
# コメント行を削除
sed '/^#/d' config.txtawkの基本:列の抽出と集計
# 第1列を表示
awk '{print $1}' file.txt
# 区切り文字を指定
awk -F: '{print $1}' /etc/passwd
# 条件付き表示
awk '$3 > 100 {print $0}' file.txt
# 合計を計算
awk '{sum += $2} END {print "合計:", sum}' sales.txt実用例:Nginxアクセスログ解析
# アクセス数の多いIPアドレスTOP10
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 404エラーの一覧
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rnまとめ
- sedは
s/置換前/置換後/gでテキスト置換、-iでファイル直接編集 - awkは
$1$2で列を参照し、-Fで区切り文字を指定する - awkの
ENDブロックで全行処理後の集計ができる - パイプと組み合わせることでログ解析などに力を発揮する


コメント