Step 02: テキスト処理とパイプライン
10万行のアクセスログから、特定のエラーだけを抽出し、IPアドレスでソートして重複を除外し、カウントする——この一連の処理を、わずか一行のコマンドで完結させた時の快感は、今でも忘れられません。grep、sort、uniq、そしてパイプライン(|)。これらを駆使できるエンジニアは、GUIツールに頼らず、あらゆるデータを瞬時に料理できます。Linuxの真髄は、ここにあります。このStepでは、テキスト処理の基本と、コマンドを連携させる技術を徹底的に学びます。
マスターすべき3つの技術領域
1. 情報の抽出
膨大なログファイルから「ERROR」を含む行だけを抽出(grep)、先頭10行を確認(head)、最新の更新をリアルタイム監視(tail -f)——障害対応の最前線で、これらのコマンドなしでは戦えません。
2. テキスト加工
データをアルファベット順や数値順に並べ替え(sort)、重複を削除してユニーク値だけを抽出(uniq)、行数や単語数をカウント(wc)——ログ分析やレポート作成で、圧倒的な生産性を発揮します。
3. 連携の魔法
パイプライン(|)で複数のコマンドを連結し、標準出力をファイルに保存(>)、または追記(>>)する——この「コマンドの流れ」を設計できるようになると、Linuxが魔法の杖に変わります。
このStepで習得すべき記事
各コマンドの記事を読み、実際のログファイルで試してください。
現場の知恵:tail -f の活用とリダイレクト上書きミスの防止策
本番障害の初動対応で最も頼りになるのがtail -f /var/log/app.logです。リアルタイムでログが流れる画面を見ながら、エラーが発生する瞬間を捉えられます。複数のログを同時監視する場合はtail -f /var/log/nginx/access.log /var/log/app/error.logのように、スペース区切りで複数ファイルを指定できます。
一方、リダイレクト(>)の誤用は、取り返しのつかない事故につながります。かつて、ログ集計結果を保存しようとcat access.log | grep ERROR > access.logと実行し、元ファイルを空にしてしまったことがあります。>は出力先ファイルを上書きするため、入力ファイルと同じ名前を指定すると、読み込み前にファイルが空になります。
教訓:リダイレクトで上書きする際は、必ず別名のファイルに出力してください。追記する場合は>>を使い、既存データを保護します。また、set -o noclobberを設定すると、既存ファイルへの上書きを防げます(上書きしたい場合は>|を使用)。
