ALL,
В Perl есть очень мощная функция под названием grep{} @some_var
.
. Я пытаюсь изменить скрипт, чтобы использовать grep для анализа файла журнала AIDE ипосчитать количество измененных строк.
Однако по какой-то причине счетчик равен 0.
Может кто-нибудь помочь?Прошло много времени с тех пор, как я использовал Perl в производстве ...
#!/usr/bin/perl -w
use strict;
my @lines;
open( INFILE, "aide.log" ) || die "Cannot open input file for processing";
push( @lines, $_ ) while <INFILE>;
close INFILE;
my $matched;
my $count = grep { $matched == 1; $matched = 1 if $_ =~ /[-A-Za-z0-9]*(Added|Changed|Removed)/; $matched = 0 if $_ =~ /[-A-Za-z0-9]*Detail/ } @lines;
print "Number of changed files is ", $count, "!\n";
Все, что мне нужно, это посчитать количество строк между
XXX Added
XXX Changed
XXX Deleted
и
XXX Detail
Количество не должно включать эти строки.
, где XXX
- просто произвольный текст.
TIA!
[EDIT]
aide.log
AIDE version xxx
Executed on 23 September 2019 05:15:00
2019-09-23T05:15:00+00 localhost Added files
2019-09-23T05:15:00+00 localhost /tmp/testfile
2019-09-23T05:15:00+00 localhost /scripts/aide-parser.pl
2019-09-23T05:15:00+00 localhost Changed files
2019-09-23T05:15:00+00 localhost /var/log/syslog
2019-09-23T05:15:00+00 localhost Deleted files
2019-09-23T05:15:00+00 localhost /scripts/aide-parser.pl.old
2019-09-23T05:15:00+00 localhost /etc/aide.conf.old
2019-09-23T05:15:00+00 localhost /etc/iptables.conf.old
2019-09-23T05:15:00+00 localhost Details of changes
Пример вывода:
Number of changed files is 6
Должны учитываться только строки с именем файла
[/ EDIT]