我正在监控日志文件。每一行都有以下格式:
2012 5 29 14 20 438.815 872.737 -1.89976 -0.55156 8.68749 -0.497848 -0.54559 0 0 6 00 0 0 0 0 0 0 0 0 80 9 0 0 10 0 0 0 8 00 9 0 0 0 0 0 0 2 41 84 0 0 0 1 0
如您所见,每个值都由一个标签分隔。
如何编写Perl脚本来获取每个新的数据行(日志文件每十分钟更新一次)并将此数据插入MySQL数据库?
我想在命令行上尽可能多地做这件事。
如果我tail -f -n 1 ./Eamorr.out > myPerlScript.pl
,我的perl脚本会在每次附加文件时获取数据吗?
非常感谢,
答案 0 :(得分:2)
bash中的另一种方法:
#!/usr/bin/perl -w
use strict;
$|++; # unbuffer output
open FH, "tail -f /var/log/syslog |";
while (<FH>) { chomp; print; }
在纯shell中没有Perl:
tail -f /var/log/syslog |
while read a; do
echo "INSERT INTO FOOBAR VALUES($(
sed "s/ /','/g; s/^/'/; s/$/'/" <<< "$a")
);"
done
答案 1 :(得分:1)
如果这是您想要采用的方法,则需要一个管道,例如:
tail -f -n 1 ./Eamorr.out | myPerlScript.pl
其中myPerlScript.pl
读取传入的行,如:
while (<>) {
chomp;
print "Handling: $_\n";
}