コマンドでアクセスログの解析をする際に、検索キーワードを端末でも表示させたかったので、ちょいとスクリプトを書いてみた。URLエンコードができるコマンドとか、意外と見つからなかったし。
追記:と思ったら、nkf --url-inputでいけるみたいですね。知らんかった。しかもこっちの方が簡単だし。うーん。
□ URLデコードするunescapeコマンド
---------------------------------------------------
#!/usr/bin/ruby
require 'cgi'
require 'nkf'
STDIN.each do |line|
print NKF.nkf('-w', CGI.unescape(line))
end
---------------------------------------------------
上記は、UTF-8な環境向けなので、EUC-JPな環境では-wを-eに
Shift-JISな環境では-wを-sに変更する必要がある。
コマンドラインでそのまま実行するには、chmod +x unescapeで
スクリプトに実行権限をつけて、パスの通っているフォルダに
コピーしておくと便利。
実行すると、URLデコードされてこんな感じに日本語で表示される。
$ cut -d ' ' -f11 access.log | sort | uniq | unescape
"http://www.google.co.jp/search?hl=ja&q=kurobox-pro パスワード&btnG=Google 検索&lr="
"http://www.google.co.jp/search?hl=ja&q=leveld x flight&lr="
"http://www.google.co.jp/search?hl=ja&q=linux スクリプト キー割り当て&lr=lang_ja"
"http://www.google.co.jp/search?hl=ja&q=linux sp4010 ドライバー&btnG=検索&lr=lang_ja"
"http://www.google.co.jp/search?hl=ja&q=ls-gl scon-kit/pro&lr=lang_ja"
"http://www.google.co.jp/search?hl=ja&q=ls-gl scon-kit&lr=lang_ja"
"http://www.google.co.jp/search?hl=ja&q=opfc ghostscript 脆弱性&lr="
"http://www.google.co.jp/search?hl=ja&q=orca日記&btnG=Google 検索&lr="
"http://www.google.co.jp/search?hl=ja&q=orca スクリプト&btnG=Google 検索&lr="
"http://www.google.co.jp/search?hl=ja&q=orca プレビュー sarge&lr="
:
□ nkfを利用する楽な方法
nkf --url-inputでも変換できるので、上記のようなことをしなくても
.bashrcとかに、下記の行を追加してエイリアスを設定しておけば
unescapeがコマンドのように利用できる。
下記の場合は、-wオプションでUTF-8環境を想定。
---------------------------------------
alias unescape='nkf -w --url-input'
---------------------------------------