トップ «前の日記(2008-08-10) 最新 次の日記(2008-08-16)» 編集

ORCA愉快日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|01|02|09|
2013|04|

2008-08-11 コマンドでURLデコードするスクリプト

_ [Linux] コマンドでURLデコードするスクリプト

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

トップ «前の日記(2008-08-10) 最新 次の日記(2008-08-16)» 編集