我有一個條件,找出潛臺詞的特定部分,在一些集中的所有行,我已經結束了與此:簡化perl的地圖和grep
my @missing = grep { $_ ne '' } map { $1 if m/^prefix:\s+(.+):\s+suffix$/ } @lines;
工作正常。但是在開始的時候(爲了在比賽沒有發生時擺脫所有的情緒線)看起來很可怕。
有沒有更乾淨的方式做到這一點?
只是爲了澄清,我這裏是輸入和輸出我得到沒有的grep:
my @lines = (
'drivel',
'prefix: matches: suffix',
'stuff',
'prefix: more: suffix'
);
my @selected = map { $1 if m/^prefix:\s+(.+):\s+suffix$/ } @lines;
print "found: $_\n" foreach @selected;
輸出想要的東西:
found: matches
found: more
輸出與上面得到:
found:
found: matches
found:
found: more
你的輸入是什麼,你想達到什麼輸出?可能這可以通過grep或sed單獨完成。 –
只是'@missing = map /^prefix:\s+(.+):\s+suffix$/,@ lines'應該有你想要的效果。但我無法想象'@ lines'中的值會導致'map'返回一個空字符串。你可以顯示你的數據樣本嗎? – Borodin