置換・整形・列処理・集計・重複処理など、実務で最も出番が多い領域です。
sed / awk / sort / uniq を組み合わせて、日常的なログやCSV処理の基礎を鍛えます。
想定レベル:Lv2〜4/目安:各5〜8分
1) ファイル内の文字列を一括置換する
問題:config.txt
内の文字列 http://
をすべて https://
に置換してください(上書き保存)。
ヒント:-i
オプションで直接書き換え。
▶解答例
sed -i "s|http://|https://|g" config.txt
2) 先頭に行番号を付けて表示する
問題:data.txt
を読み込み、各行の先頭に行番号を付けて表示してください。
ヒント:awk
の NR
。
▶解答例
awk "{print NR, $0}" data.txt
3) CSV の 2列目だけを取り出す
問題:カンマ区切りの users.csv
から 2列目(ユーザー名)だけを取り出して表示してください。
ヒント:-F,
で区切り文字指定。
▶解答例
awk -F, "{print $2}" users.csv
4) ログから日付(1列目)を抽出してユニークに並べる
問題:スペース区切りの access.log
から 1列目(日付部分) を取り出し、重複を除いて表示してください。
ヒント:sort -u
。
▶解答例
awk "{print $1}" access.log | sort -u
5) ログ内の 404 エラー件数をカウントする
問題:access.log
に含まれるステータスコード 404
の出現回数を数えてください。
ヒント:フィルタ → 件数。
▶解答例
awk "$9 == 404 {count++} END {print count}" access.log
6) ファイルの中から空行を削除する
問題:notes.txt
の空行をすべて削除して出力してください。
ヒント:^$
は空行。
▶解答例
sed "/^$/d" notes.txt
7) ファイルの中の重複行を削除する(順序は問わない)
問題:list.txt
の重複行を取り除いて出力してください(順序はソート順でよい)。
ヒント:sort -u
。
▶解答例
sort -u list.txt
8) ソート済みデータから重複行と件数をまとめる
問題:words.txt
をソートした上で、各単語の出現回数とともに表示してください。
ヒント:uniq -c
。
▶解答例
sort words.txt | uniq -c
9) エラーログから “ERROR” を含む行だけを抽出し、日時順に並べる
問題:app.log
のうち “ERROR” を含む行を抽出し、1列目の日時で昇順ソートしてください。
ヒント:grep
と sort
の組み合わせ。
▶解答例
grep "ERROR" app.log | sort -k1,1
10) CSV の 3列目を合計する
問題:カンマ区切り sales.csv
の 3列目(売上数値) を合計して表示してください。
ヒント:awk
の変数加算。
▶解答例
awk -F, "{sum+=$3} END {print sum}" sales.csv
学習のヒント
sed
→ 文字列置換・削除に強いawk
→ 列操作・集計に強いsort
→ 並べ替え・-k
でキー指定uniq
→ 重複処理(必ずソート後に使うと安定)
このカテゴリは実務で最も使用頻度が高く、ログ解析・CSV処理・テキスト整形の基礎になります。