Perl打印除非正则表达式和行数

时间:2013-05-19 02:32:18

标签: regex perl printing lines

我目前正在通过区域文件对自动删除进行排序..

perl -i -ne 'print unless (/#$DOMAINNAME/ and \$n=7) .. not \$n--' named.conf.ext

(逃避n需要它才能工作,我想其他它认为主脚本有一个n变量要传递?)

这个调用来自perl脚本,我想通过不必调用shell从perl脚本重新运行perl来完成它,并让主脚本执行它来清理它。

这里不是perl专家,你可能会说:)我尝试过像

这样的事情
open (DATAIN, "<named.conf.ext");
 open (DATAOUT, "> named.conf.tmp");
 while (<DATAIN>){
  PRINT unless (/#foo.com/ and $n=7) .. not $n-- DATAOUT;
 }
 close DATAOUT;
close DATAIN;

和一些变种,但它抱怨 测试线4处的语法错误,靠近“ - DATAOUT”

我确信我在这方面太过分了,答案就在我面前,但是2天后,我认为大脑需要在这里开始。

由于

1 个答案:

答案 0 :(得分:3)

通常是

print DATAOUT;

的缩写
print DATAOUT $_;

所以你想要

print DATAOUT unless (/#foo.com/ and $n=7) .. not $n--;

或更长的

print DATAOUT $_ unless (/#foo.com/ and $n=7) .. not $n--;