首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过文件中与字符串匹配的行

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

Stack Overflow用户
提问于 2018-04-25 15:47:52
回答 2查看 39关注 0票数 1

由于'#‘在Perl中被视为注释字符,我想区分一下以hash(井号)开头的句子。我正在尝试对设备进行增量备份,但其中包含散列的行不断更改设备的修改时间。

代码语言:javascript
复制
 ! # 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

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

代码语言:javascript
复制
if(open(F, "+< $incoming")) {
    my $out = '';
    while (<F>) {
       /\#\ Last modified"/ and next;
      $out .= $_;
    }

有没有关于如何删除整个句子谁有"#最后修改“的线索?

EN

回答 2

Stack Overflow用户

发布于 2018-04-25 15:51:41

如果您只是想跳过包含# Last modified的行,那么可以尝试这样做:

代码语言:javascript
复制
#!/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
EN

Stack Overflow用户

发布于 2018-04-25 16:20:21

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

像这样

代码语言:javascript
复制
diff -I '# Last modified'

这比对文件进行预处理以去除伪线要好得多

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50016733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档