为了格式化我的 apache error_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 别名/函数?或者我是从完全错误的方向来的?