2011-09-25 153 views
1

例如,我想刪除不需要的行與BBBB如何在刪除perl中不需要的行後刪除空行?

aaaa 
bbbb 
cccc 
dddd 

我用下面的Perl的正則表達式來做到這一點。

$_ =~ s/bbbb//g; 

這裏的問題是,一個空行是住宿,例如

aaaa 

cccc 
dddd 

我需要刪除不需要的文本行以及空行。

+0

你有'$ _'中的全部數據還是你以某種方式循環和打印? – Mat

+0

一行一行,我沒有$ _中的全部數據,只是逐行 –

+0

那麼爲什麼不停止打印空行呢?我錯過了什麼嗎? – Mat

回答

4

你可以簡單地在您的正則表達式換行符:

$_ =~ s/bbbb\n//g; 

這將導致:

aaaa 
cccc 
dddd 
+0

完美,謝謝拉爾斯克 –

+0

事實上,它工作得很好。我在發佈前測試過;請做同樣的事情。 'perl -p -e's/bbbb \ n // g' larsks

+0

@larsks,的確如此。我編輯了我的答案,以消除廢話。並刪除了我的評論。 – Lucas

1

在我看來,如果你是逐行讀取這一行你可以只讓你的循環做到這一點:

my @foo = (
    "aaaa\n", 
    "bbbb\n", 
    "cccc\n", 
    "dddd\n"); 

foreach my $line (@foo) { 
    next if ($line =~ /^bbbb$/); 

    # now do something with a valid line; 
}