utte30 / 78

アクセスログから最も多いIPアドレスを調べる

ホームディレクトリの access.log は、各行の先頭にアクセス元のIPアドレスがあるログです。最も多くアクセスしたIPアドレスを調べ、IPアドレスだけをホームディレクトリの top.txt に書いてください。

解説
cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head -n 1 | sed 's/^ *[0-9]* //' > top.txt

「先頭の欄を取り出す → 並べ替える → 同じものを数える → 回数の多い順に並べる」という流れは、ログ集計の定番です。sort で同じ値を隣り合わせにしてから uniq -c で数え、sort -rn で数値(-n)の大きい順(-r)に並べます。

uniq -c の出力は「回数 値」の形なので、最後に回数を取り除くと値だけが残ります。手で echo 10.0.0.5 > top.txt と書いても結果は同じですが、集計のコマンドは覚えておくと実務でも使えます。sort の -n を付け忘れると、数値が文字として比べられ、10 より 9 が大きい扱いになります。

使うコマンド

関連する問題