我有一個看起來像下面一個日誌文件:的Perl如果條件參數
4680 p4exp/v68 PJIANG-015394 25:34:19 IDLE none
8869 unnamed p4-python R integration semiconductor-project-trunktip-turbolinuxclient 01:33:52 IDLE none
8870 unnamed p4-python R integration remote-trunktip-osxclient 01:33:52
有在同一個日誌文件,使得一些包含在結束閒置沒有,而一些沒有很多這樣的條目。我希望保留那些具有「R整合」和「空閒」的組合,並忽略其餘部分。我已經嘗試了下面的代碼,但沒有得到想要的結果。
#!/usr/bin/perl
open (FH,'/root/log.txt');
my %stat;
my ($killid, $killid_details);
while ($line = <FH>) {
if ($line =~ m/(\d+)/){
$killid = $1;
}
if ($line =~ /R integration/ and $line =~ /IDLE none/){
$killid_details = $line;
}
$stat{$killid} = {
killid => $killid_details
};
}
close (FH);
我得到所有R集成這應該不會像8870應該被忽略的情況下,線(例如我得到8869,8870線)。
如果有任何錯誤,請通知我。我仍然在學Perl。謝謝。
添加'使用嚴格的;'和'使用警告;'在你的程序,看看是否可以清理你的一些錯誤。 –
這有什麼預期的結果? – fugu
您需要添加'else {next; }''語句中的''子句,所以當它們不匹配時跳到下一行。我想你可能還需要改變你的'$ stat {$ killid}'任務,但很難說,因爲你沒有說出預期的結果。 – Barmar