Bashテキスト処理 - grep、sed、awk、sort、cut

grepで検索、sedで置換、awkでカラム抽出、sortで並べ替え、cutでフィールド選択を行うbashでのテキスト処理をマスターします。

Text Processing

詳細な説明

Bashでのテキスト処理

Bashはgrep、sed、awk、sort、cutなどの強力なユーティリティのおかげでテキスト処理に優れています。これらのツールをパイプと組み合わせて洗練されたデータ処理パイプラインを構築できます。

grep - パターン検索

grepはパターンに一致するファイルの行を検索します:

grep "error" /var/log/syslog         # 単純な文字列検索
grep -ri "todo" src/                  # 再帰的、大文字小文字を区別しない
grep -n "function" app.js            # 行番号を表示
grep -v "^#" config.ini              # コメント行を除外
grep -E "error|warn|fatal" app.log   # 拡張正規表現(OR)

sed - ストリーム編集

sedはストリームに対してテキスト変換を実行します:

sed 's/old/new/g' file.txt              # すべての出現を置換
sed -i 's/localhost/prod.server/g' cfg  # その場で編集
sed '/^$/d' file.txt                    # 空行を削除
sed -n '10,20p' file.txt               # 10-20行を表示

awk - カラム処理

awkはカラムデータの処理に優れたパターンスキャン言語です:

awk '{print $1, $3}' data.txt           # カラム1と3を表示
awk -F',' '{print $2}' users.csv        # CSVフィールド抽出
awk '{sum += $3} END {print sum}' data  # カラムの合計
awk '$3 > 1000' transactions.txt        # カラム値でフィルタリング

sort - 行の並べ替え

sort file.txt              # アルファベット順ソート
sort -rn numbers.txt       # 逆順数値ソート
sort -t',' -k2 data.csv   # カラム2でソート(CSV)
sort -u wordlist.txt       # ソートして重複排除

ツールの組み合わせ

これらのツールをパイプで組み合わせることで真の力を発揮します:

cat access.log | grep "POST" | awk '{print $7}' | sort | uniq -c | sort -rn | head -10

ユースケース

テキスト処理コマンドはログ分析、データ抽出、設定管理、レポート生成に不可欠です。開発者はgrepでコードベースのTODOコメントを検索したり、sedで複数ファイルの設定値を更新したり、awkでCSVエクスポートからメトリクスを抽出したりします。

試してみる — Bash Cheat Sheet

フルツールを開く