QSH(急に仕事で必要になったので)
目次
概要
Apacheのログだけではないけれど、ファイルの中身を検索(grep)して、該当する行数をカウント(wc -l)して表示する。
ファイル名にワイルドカードが使えるので、複数ファイルをまとめてgrepできる。
gzip圧縮(.gz)がかかっているファイルも検索(zgrep)できる。
ついでにファイルごとに出力するので、ファイル単位で結果が得られる。
ちなみにLinux用。
スクリプト
#!/bin/bash # greplogall - grep all log file # SUNAGAWA Hiroyuki / Studio JamPack # 2016.03.22 # target stringをログファイルの中から探して、行数をカウントするスクリプト # # USAGE ./greplogall.sh "target string" /var/log/ログファイル名 # ログファイル名はワイルドカード(*)が有効。 # しかしあまり大量のファイルを処理させると # サーバの負荷が高くなるのでお止めになったほうが良い。 # # 例: ./greplogall.sh "/hoge/ " /var/log/httpd/access_log.201511* # 2015/11月のログ全部から /hoge/ を探して件数を返す。 targetstr=$1 shift echo . echo greplogall - grep all log file echo SUNAGAWA Hiroyuki / Studio JamPack echo 2016.03.22 echo . while [ "$1" != "" ] do echo -n $targetstr echo -n "," echo -n $1 echo -n "," if [[ $1 =~ .gz$ ]]; then /usr/bin/zgrep $targetstr $1 | wc -l; else /bin/grep $targetstr $1 | wc -l; fi shift done exit 0
結果
/hoge/,/var/log/httpd/access_log.20160227.gz,40417 /hoge/,/var/log/httpd/access_log.20160228.gz,34528 /hoge/,/var/log/httpd/access_log.20160229.gz,21177
コツ
http://jamfunk.jp/hoge/のアクセスを検索したい場合は”/hoge/ “(スラッシュの後ろにスペース)で検索すると、”/hoge/example.html”などを回避できる。ただ、リファラにも引っかかるかもしれない。
なお
使用は自己責任