2015-04-20 93 views
0

,所以我有,例如:正则表达式查找用户名

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 

我用正则表达式查找用户名。我知道,对单词“用户”和“用户=”我可以用这个:

while($linelist = <>) 
{ 
if($linelist =~ /(\buser[ =]{1})/) 
{ 
    print $1; 
} 
} 

但我怎么能找到例如“波格丹”或“根”?和其他用户的姓名。

回答

1

{1}是多余的。

if (my ($user) = $linelist =~ /\buser[ =](.*)/) { 
    print "$user\n"; 
} 

将括号中的$用户括起来为绑定操作符创建列表上下文,因此返回$ 1。如果用户名后可能有一些信息,则必须限制*(例如​​)。

+0

谢谢:D我用/ \ buser [=](\ S *)/现在它工作的很棒! – Mateusz