私のapacheerror_logをフォーマットして、より見やすくするために、私はすばやく汚いperlスクリプトを作成しました。
tail -f /var/log/apache2/error_log | perl -ne
'($timeStamp, $error, $hostName, $message) =
/^\[([^\]]+)\] \[([^\]]+)\] (?:\[client ([^\]]+)\])?\s*(.*)$/i; # Parse log
($day, $month, $date, $time, $year) =
$timeStamp =~ m/(\S*) (\S*) (\S*) (\S*) (\S*)$/; # Extract the timestamp
$message =~ s/, referer: (.*)$/\./; # Strip the referer references
$message =~ s/\\n/\n/g; # Replace literal new lines to expand object dumps
print $time . " " . $date . " " . $month . " | " . $message ."\n";'
ターミナルから簡単に呼び出せるように、スクリプトをBashエイリアスに追加したいと思います。
例えば
alias te=tail -f /var/log/apache2/error_log | perl -ne '($timeStamp, $error, $hostName, $message) = /^\[([^\]]+)\] \[([^\]]+)\] (?:\[client ([^\]]+)\])?\s*(.*)$/i; ($day, $month, $date, $time, $year) = $timeStamp =~ m/(\S*) (\S*) (\S*) (\S*) (\S*)$/; $message =~ s/, referer: (.*)$/\./; $message =~ s/\\n/\n/g; print $time . " " . $date . " " . $month . " | " . $message ."\n";'
明らかに、引用符をエスケープすると、乱雑になり始めます。また、perlスクリプトを独自のファイルに入れてエイリアスとして実行しようとしましたが、移植性のために.bash_profileファイルの外部でスクリプトを実行する必要はありません。
perlスクリプトをbashエイリアス/関数として使用するにはどうすればよいですか?それとも私は完全に間違った方向からこれに来ていますか?