0

我正在监视一个日志文件。每行具有以下格式:

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 脚本会在每次附加文件时获取数据吗?

提前谢谢了,

4

2 回答 2

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
于 2012-05-29T14:42:58.743 回答
1

如果这是您要采用的方法,则需要一个管道,例如:

tail -f -n 1 ./Eamorr.out | myPerlScript.pl

wheremyPerlScript.pl读取传入的行,如:

while (<>) {
chomp;
print "Handling: $_\n";

}

于 2012-05-29T14:36:21.033 回答