コマンドでアクセスログの解析をする際に、検索キーワードを端末でも表示させたかったので、ちょいとスクリプトを書いてみた。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' ---------------------------------------