シェルスクリプト

テキスト処理:sed・awkの使い方【シェルスクリプトでテキストを自在に操る】

シェルスクリプト
記事内に広告が含まれています。

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.txt

awkの基本:列の抽出と集計

# 第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 ブロックで全行処理後の集計ができる
  • パイプと組み合わせることでログ解析などに力を発揮する

コメント

タイトルとURLをコピーしました