如何在Perl中的正则表达式匹配后删除该行

时间:2015-01-16 15:23:52

标签: regex perl

我想在正则表达式匹配后删除该行,但我不确定如何编写删除Perl中的下一行 - help?

while ( my $line = <FILE> ) {
if ($line =~ m/(regex)/i) {
# delete the next $line
}    

4 个答案:

答案 0 :(得分:7)

你是什么意思&#34;删除&#34;?你的意思是忽略它?

while ( my $line = <FILE> ) {
    if ( $line =~ /regex/ ) {  # If it matches this regex
        my $ignored = <FILE>;  # read the next line and ignore it.
    }
}

答案 1 :(得分:0)

当你遇到一场比赛时,你设置了$skip_flag怎么样?当您逐行读取文件时,可以构建输出字符串,在设置标志时跳过行。

答案 2 :(得分:0)

if ( $line =~ /regex/ ) {  # If it matches this regex
    <FILE>;  # gobble gobble
}

你需要我的朋友吗?

答案 3 :(得分:0)

您可以运行$> perl -pi -e 'BEGIN{undef $/;} s#(YOUR_REGEX_PATTERN)[^\n]*\n[^\n]*\n#$1\n#' YOUR_FILE

这可以通过强制Perl multiline replacement来执行read the entire file at once。 但始终肯定先备份!您可以让Perl通过appending a suffix-i转换$> perl -pi.bak -e ...切换为您执行此操作