grepとかawkとかsortとかuniqueとか(niceも)

アクセスログのファイルに「/content」含まれないばあいにのIPアドレスだけ出力して、 ソートした後に集約して件数出して、その件数でソート(降順)して上位10件を出す。 にたいして、処理が重いので優先順位を下げる。

知らないコマンドとgrepの知らないオプションが使われていたので、メモする。

$ nice -n 19 grep -F '[19/Jun/2017:21:' access_log.20170619 | grep -Fv '/content' | awk -F '"' '{print $8}' | sort | uniq -c | sort -nr | head -10

Linuxコマンド集 - 【 nice 】 優先順位を決めてコマンドを実行する:ITpro

www.atmarkit.co.jp

Linuxコマンド集 - 【 grep 】 文字列を検索する:ITpro

eng-entrance.com

Linuxコマンド集 - 【 uniq 】 ソート済みのファイルから重複した行を削除する:ITpro