apache.logがあるとして、以下のコマンドを実行
$ perl -e 'while(<>){/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/;print $8,"\n" unless $8 eq "-";}' < apache.log |xargs -l1 php -r 'print(urldecode($argv[1])."\n");' -- | nkf
perlにログを渡しrefererを取り出し、xargsでphpに一行づつ渡す。phpでurldecodeをして出力し、nkfで文字コードを推定させてutf8で出力。ただしすごく遅い。
コピペ用
[sourcecode language=”c”]
perl -e ‘while(<>){/^(.*) (.*) (.*) \[(.*)\] “(.*)” (.*) (.*) “(.*)” “(.*)”/;print $8,”\n” unless $8 eq “-“;}’ < apache.log |xargs -l1 php -r 'print(urldecode($argv[1])."\n");' -- | nkf
[/sourcecode]