跳过文件中与字符串匹配的行

时间:2018-04-25 07:47:52

标签: regex perl

因为'#'在Perl中被视为注释的字符,我想在它用hash(井号)符号开始的地方区分出来。我正在尝试对设备进行增量备份,但是其中包含哈希的行会不断更改设备的修改时间。

 ! # Last modified Wed Apr 25 12:57:50 2018
   set ns config -IPAddress x.x.x.x -netmask 255.255.255.0
   enable ns feature WL LB CS SSL CF SSLVPN REWRITE RESPONDER
   enable ns mode FR L3 MBF Edge USNIP PMTUD
 --- 1,6 ----
   show run
   #NS12.0 Build 53.22
 ! # Last modified Wed Apr 25 13:02:05 2018
   set ns config -IPAddress x.x.x.x -netmask 255.255.255.0
   enable ns feature WL LB CS SSL CF SSLVPN REWRITE RESPONDER
   enable ns mode FR L3 MBF Edge USNIP PMTUD

到目前为止,在脚本中,我使用下面的字符串来匹配,但它不起作用。

if(open(F, "+< $incoming")) {
    my $out = '';
    while (<F>) {
       /\#\ Last modified"/ and next;
      $out .= $_;
    }

有关如何删除整个句子的任何线索##;#Last modified&#34; ?

2 个答案:

答案 0 :(得分:1)

如果您只想跳过包含# Last modified的行,请尝试以下操作:

#!/usr/bin/perl
use strict;
use warnings;
use feature qw/ say /;


while(<DATA>){
  chomp;
  next if /# Last modified/;
  say;
}


__DATA__
! # Last modified Wed Apr 25 12:57:50 2018
   set ns config -IPAddress x.x.x.x -netmask 255.255.255.0
   enable ns feature WL LB CS SSL CF SSLVPN REWRITE RESPONDER
   enable ns mode FR L3 MBF Edge USNIP PMTUD
 --- 1,6 ----
   show run
   #NS12.0 Build 53.22
 ! # Last modified Wed Apr 25 13:02:05 2018
   set ns config -IPAddress x.x.x.x -netmask 255.255.255.0
   enable ns feature WL LB CS SSL CF SSLVPN REWRITE RESPONDER
   enable ns mode FR L3 MBF Edge USNIP PMTUD

答案 1 :(得分:0)

如果您正在使用diff,那么最好的方法是使用-I选项,这会导致它忽略与两个文件中的正则表达式匹配的行

喜欢这个

diff -I '# Last modified'

这非常适合预处理文件以删除虚假行