所以我举个例子:
Mar 22 09:05:06 test sshd[8156]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=111.111.111.111 user=root
Mar 15 06:35:01 test CRON[22947]: pam_unix(cron:session): session closed for user bogdan
我必须使用正则表达式查找用户名。我知道,单词“user”和“user =”我可以使用它:
while($linelist = <>)
{
if($linelist =~ /(\buser[ =]{1})/)
{
print $1;
}
}
但我怎样才能找到例如“bogdan”或“root”?和其他用户的名字。
答案 0 :(得分:1)
{1}
是多余的。
if (my ($user) = $linelist =~ /\buser[ =](.*)/) {
print "$user\n";
}
将括号中的$ user括起来为绑定操作符创建列表上下文,因此返回$ 1。如果用户名后面可能包含某些信息,则您必须限制*(例如/\buser[ =]([^ ]*)/
)。