短時間で「見つける・数える・切り分ける」を鍛える10問です。
答えは クリックで展開 できます。
- 想定レベル:Lv2〜3
- 目安時間:各3〜6分
- 主に使うコマンド:
grep(-n, -i, -v, -C, -R, -E, -o)、head、wc、sort、uniq、必要に応じてawk
- 1) access.log から 404 を抽出し、先頭10行を確認する
- 2) 5xx(サーバーエラー)の発生件数を数える
- 3) 404 を出しているクライアントIPの上位10件を出す
- 4) README.md から「error」を大文字小文字を無視して行番号付きで検索する
- 5) access.log から bot を含む行を除外 して表示する
- 6) app.log で「ERROR」の前後3行の文脈ごと表示する
- 7) ディレクトリ src/ を再帰的に検索し、TODO を含む場所を行番号つきで探す
- 8) テキスト中から IPv4 アドレスだけ を抽出(重複は1回)
- 9) カレント以下で password= を含むファイル名のみ列挙(例外ファイルは除外)
- 10) syslog で単語としての「fail」出現回数を数える
- 次の一歩
- 関連記事
1) access.log から 404 を抽出し、先頭10行を確認する
問題:access.log から 404エラーの行だけ を抽出し、先頭10行 を表示してください。
ヒント:ステータスコードの前後スペースを意識(例:" 404 ")。
▶解答例
grep " 404 " access.log | head -n 102) 5xx(サーバーエラー)の発生件数を数える
問題:access.log に含まれる HTTP 5xx の行数(=発生件数)を数えて表示してください。
ヒント:拡張正規表現で 5[0-9]{2}。
▶解答例
grep -E " 5[0-9]{2} " access.log | wc -l3) 404 を出しているクライアントIPの上位10件を出す
問題:access.log から 404 の行だけ を対象に、先頭フィールド(IP)を集計し、上位10件 を表示してください。
ヒント:抽出→フィールド抽出→集計の順。
▶解答例
grep " 404 " access.log | awk "{print $1}" | sort | uniq -c | sort -nr | head -n 104) README.md から「error」を大文字小文字を無視して行番号付きで検索する
問題:README.md 内の「error」を 大小区別なく 検索し、行番号付きで表示してください。
ヒント:-i と -n。
▶解答例
grep -in "error" README.md5) access.log から bot を含む行を除外 して表示する
問題:ボットアクセスを除外して内容を確認したい。access.log から “bot” を含む行を 除外 して表示してください。
ヒント:-v は否定(反転)マッチ。
▶解答例
grep -v "bot" access.log6) app.log で「ERROR」の前後3行の文脈ごと表示する
問題:app.log から “ERROR” にマッチする行の 前後3行 を併せて表示してください(行番号付きだと便利)。
ヒント:-C 3 と -n。
▶解答例
grep -nC 3 "ERROR" app.log7) ディレクトリ src/ を再帰的に検索し、TODO を含む場所を行番号つきで探す
問題:src/ 以下を 再帰検索 し、TODO を含む行を ファイル名+行番号 付きで表示してください。
ヒント:-R(再帰)、-n(行番号)。
▶解答例
grep -RIn "TODO" src/8) テキスト中から IPv4 アドレスだけ を抽出(重複は1回)
問題:text.txt から IPv4 形式 の文字列だけを抽出し、重複を除いて 一覧表示してください。
ヒント:-Eo(パターンのみ出力)。
▶解答例
grep -Eo "([0-9]{1,3}.){3}[0-9]{1,3}" text.txt | sort -u9) カレント以下で password= を含むファイル名のみ列挙(例外ファイルは除外)
問題:カレントディレクトリ以下で password= を含む ファイル名だけ を列挙してください。/.env.example は除外して構いません。
ヒント:-l はファイル名のみ表示、--exclude で除外。
▶解答例
grep -RIl "password=" --exclude=.env.example .10) syslog で単語としての「fail」出現回数を数える
問題:/var/log/syslog における 単語としての “fail” の 出現回数 を数えてください(大文字小文字は無視)。
ヒント:-w(単語境界)、-o(マッチ部のみ)、-i(大小無視)。
▶解答例
grep -iwo "fail" /var/log/syslog | wc -l次の一歩
- うまくいかなかった問題は、パターンの前後(空白・区切り)や オプションの意味 を確認しましょう。
- 派生練習:同じ課題を 別のアプローチ(例:
awkを使う、正規表現を厳密化する)で再挑戦すると理解が深まります。 - 関連:コマンド索引(
grep,awk,sort,uniq)/実務レシピ「エラーメッセージを素早く探す方法」

