因为'#'在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; ?
答案 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'
这非常适合预处理文件以删除虚假行