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

ご覧のとおり、各値はタブで区切られています。

データの新しい行を取得し(ログファイルは10分ごとに更新されます)、このデータをMySQLデータベースに挿入するPerlスクリプトを作成するにはどうすればよいですか?

コマンドラインでこれを可能な限り実行したいと思います。

そうした場合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; }

純粋なシェルに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

ここで、myPerlScript.pl次のように着信行を読み取ります。

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

}

于 2012-05-29T14:36:21.033 に答える