コマンド連携・標準入出力・一時ファイル不要の合成テクニックを鍛えます。
想定時間:各3〜6分
1) エラーログから ERROR を含む行数を数える
問題:app.log から ERROR を含む行を抽出し、件数のみ表示してください。
ヒント:抽出 → 行数。
▶解答例
grep “ERROR” app.log | wc -l
2) アクセスログのURLを頻度順に上位5件
問題:access.log の 7列目(URL) を取り出し、出現回数の多い順に 上位5件 を表示してください。
ヒント:列抽出 → ソート → uniq -c → 逆順ソート → head。
▶解答例
awk ‘{print $7}’ access.log | sort | uniq -c | sort -nr | head -n 5
3) 標準出力はファイル保存、標準エラーは捨てる
問題:generate.sh を実行し、標準出力を out.txt に保存しつつ、標準エラーは捨ててください。
ヒント:> と 2> の使い分け。/dev/null。
▶解答例
bash generate.sh > out.txt 2>/dev/null
4) 実行結果を画面表示しつつファイルにも保存する
問題:ls -1 *.log の結果を 画面に表示しながら、同時に list.txt にも保存してください(上書き)。
ヒント:tee コマンド。
▶解答例
ls -1 *.log | tee list.txt
5) 404 の行だけを取り出し、先頭10行を確認
問題:access.log から 404 を含む行だけを抽出し、先頭10行 だけ表示してください。
ヒント:フィルタ → head。
▶解答例
grep ” 404 ” access.log | head -n 10
6) 大きいファイルから重複行を除去して別ファイルへ(メモリ節約志向)
問題:巨大な big.txt から重複行を取り除き、結果を uniq.txt に保存してください(一時ファイルを作らずに済ませる)。
ヒント:ストリーム処理で並べ替え → 重複除去 → リダイレクト。
▶解答例
sort big.txt | uniq > uniq.txt
学習のヒント
|(パイプ)は「前コマンドの出力を次の標準入力へ」渡す>は標準出力を上書き保存、>>は追記2>は標準エラーの出力先を分ける(2>/dev/nullで捨てる)teeは表示+保存を同時に行える(-aで追記)
この6問で、入出力の流れを意識した“つなぐ力”を身につけましょう。

