2011-09-25 171 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; 
}