apacheやnginxなど、webサーバのアクセスログ(access.log)をtsv形式に変更するphpスクリプトです。
スクリプト
<?php
$lines = file_get_contents('php://stdin');
foreach (explode("\n", $lines) as $line) {
$regex = '/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) "([^"]*)" "([^"]*)"/';
preg_match($regex ,$line, $matches);
echo implode("\t", $matches) . PHP_EOL;
}
実行方法
$ cat access.log | php parse-apachelog.php > access_log.tsv
こちらもおススメ