perl 新手,可以使用一些帮助来了解正则表达式以及如何使用它们。我有一个文件名 auth.log,其中包含一堆成功和失败的登录。我有我希望正确的代码来读取文件并逐行读取,现在我只需要弄清楚如何拉出失败的代码并按日期将它们打印到屏幕上。下面是一个登录失败的例子,以及我在文件中读取的代码。我知道正则表达式会查找单词 failed 的匹配项,我只是无法获得语法。
9 月 14 日 07:23:59 icarus sshd [10393]:来自 137.190.220.15 端口 64704 ssh2 的 someUser 的密码失败
9 月 14 日 07:24:04 icarus sshd [10393]:来自 137.190.220.15 端口 64704 ssh2 的 someUser 的密码失败
9 月 14 日 07:30:17 icarus sshd [10523]:接受来自 137.190.19.13 端口 58506 ssh2 的 someUser 的密码
我相信我现在越来越近了,试图在其中启动一个计数变量只是为了吐出文件中有多少失败的密码,当我运行这个脚本时,我得到了大量的数字,最终只是再次以提示结束,我相信这意味着它至少仍在运行整个 auth.log,或者它没有尽头?有任何想法吗?
#!/usr/bin/perl
$count = 0;
open (MYFILE, 'auth.log');
while (my $line = <MYFILE>){
if ($line =~ /Failed password/){
$count++;
}
print $count;
#print "$line\n" if $line =~ /Failed password/;
#this was a test to make sure it was was getting all the Failed password attempts in the auth.log.
}
close (MYFILE);
任何帮助都会很棒。