我想在正则表达式匹配后删除该行,但我不确定如何编写删除Perl中的下一行 - help?
while ( my $line = <FILE> ) {
if ($line =~ m/(regex)/i) {
# delete the next $line
}
答案 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 ...
切换为您执行此操作