gpt4 book ai didi

linux - Perl 处理日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:51 25 4
gpt4 key购买 nike

我想创建一个 perl 脚本来处理 linux 中的日志文件。这个想法是从其他人中挑选出“有趣”的行。我的计划是这样的:- 制作日志文件的临时副本(因为它是不断写入的)- 搜索“有趣”的行(关键字)- 将它们复制到另一个文件“log.processed”- 通过电子邮件将该文件发送给我。 (我认为这部分将由 cron 完成)

到目前为止我有这个:

#!/usr/bin/perl
#use strict;
use warnings;
use File::Copy;

copy("/home/hq-asa.log","/home/hq-asa.temp") or die "Copy failed $!";
$NewLog = "/home/hq-asa.processed";
our $search = "keyword1|keyword2|";
my $TempLog = "/home/hq-asa.temp";

open (my $LogFile, "+<", $TempLog) or die "Could not open log temp file $!";
qx(touch $NewLog);
open ($newlog, "+<", $NewLog) or die "could not open new log file $!";
foreach $line (<$LogFile>) {
if (($line =~ m/$search/) or ($line eq $search)) {
print $newlog $line;
}
}
close($LogFile);
close($newlog);
unlink "/home/hq-asa.temp";

不要评判,我是新手。问题是,如果我希望这个脚本每小时运行一次,例如它将一次又一次地处理所有原始日志文件。我可以在原始日志文件中插入一个“书签”并告诉这个脚本搜索最后一个并从那里继续吗?或者应该如何完成?

最佳答案

写出包含 line number 的状态文件你离开的地方。当你想恢复处理时,首先读取状态文件并跳过行数。

关于linux - Perl 处理日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com