ログファイルの加工
せっかく便利なコマンドを教えて頂いたのでメモ。
"アクセスログの中で 特定のファイルにアクセスしてきた人をカウントして、多い順番に並べて表示する"
grep hogehoge.html ./access_log | perl -nle '@arr = split /\s+/, $_, 12; print $arr[11]' | sort | uniq -c | sort -nr | less
perl -nle '@arr = split /\s+/, $_, 12; print $arr[11]'
- perl コマンド
eオプション コマンドライン中の一行をスクリプトとして解釈させる
lオプション 出力の最後に改行を入れる
nオプション 繰り返し実行
- @arr = split /\s+/, $_, 12;
スペース(\s)区切りの文を12個に分割(split)し、配列(@arr=)に入れる;
- print $arr[11]
配列を出力
この出力をパイプで次のコマンドへ渡す
sort | uniq -c | sort -nr | less
- sort 一度ソートする?
- uniq -c
cオプション 重複した行をカウント
- sort -nr
nオプション 先頭の数字を数値とみなしてソートする
rオプション 逆順にソートする
- less lessで閲覧するように渡す