2015-04-20 134 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