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エクスポートからメトリクスを抽出したりします。