2016-06-20 88 views
-1

首先,我根本不瞭解Perl,因此需要相當快速的回答。我有運行存儲陣列中的一個命令的結果:搜索特定單詞的字符串數組

my @result = `$command`; 

我需要做的是搜索數組,看是否有元素包含單詞「合併」或單詞「改變」是什麼(對大小寫不敏感)。

有人可以提醒嗎?

+0

'的perldoc -f grep' – toolic

+0

這是grep在Perl coverd:HTTP://計算器.com/questions/3848360/how-can-i-implement -unix-grep-in-perl –

+0

偉大的,低估的不知道perl(我公開承認)或執行不充分的谷歌搜索downvoted。謝謝。 – Wad

回答

2

這裏作業的工具是grep - 一個允許您根據列表指定過濾器的函數。您可以像使用Unix grep一樣使用它,但它也允許進行更復雜的測試(例如運行代碼)。

你的情況:

my @matches = grep { /merge|changed/i } @result; 

if (@matches) { 
    print "One or more lines matched\n"; 
} 
+1

你會想匹配運算符上的'/ i'進行不區分大小寫的匹配。 –

+1

好點。修訂。 – Sobrique

+0

'/ \ b(?:merge | changed)\ b/i'將防止'submerged'匹配 – ikegami

0

您可以用正則表達式做到這一點。在這個例子中,如果匹配線「合併」或「改變」(當然不敏感的)的線被印刷:

#!/usr/bin/perl 
use strict; 
use warnings; 

my @result = `command`; 

foreach my $line (@result){ 
    if ($line =~ /merge|changed/i){ 
     print $line; 
    } 
} 
+0

'/ \ b(?:merge | changed)\ b/i'將防止'submerged'匹配 – ikegami

+0

在中間斜線 - >確定這是一個錯誤;) 我試過命令'ps aux'和正則表達式/ bAsh | apAChe /我 它的工作很棒 –