如何使用以下行查找单词并删除它

如何使用以下行查找单词并删除它

我一直awkExpect脚本中使用来编辑包含有关开关的信息的文本文件,到目前为止,文本文件如下所示:

Device ID Local Intrfce 
  BIOTERIO Gig 1/0/6 
  N7K-LAN(JAF1651ANDL) Gig 1/0/1 134 
  LAB_PESADO Gig 1/0/11 
  Arquitectura_Salones Gig 1/0/9 129 
  CIVIL_253 Gig 1/0/4 
  Arquitectura Gig 1/0/3 
  ING_CIVIL_DIR Gig 1/0/10 
  ING_CIVIL Gig 1/0/7 
  Ingenieria_Posgrado --More-- 
  Device ID Local Intrfce 
  Gig 1/0/8 134 
  Biblio_Barragan Gig 1/0/2 
  Electronica_Edif_3 Gig 1/0/5 127 
  Barragan_3750>exit Connection closed by foreign host. 
  ]0;cesar@cesar-HP-Pavilion-15-Note 

由于脚本处理多行输出,因此标签--More--会打印在文本文件中,并且列名称Device ID Local Intrfce会打印两次。

我希望文件看起来像这样:

Device ID Local Intrfce 
  BIOTERIO Gig 1/0/6 
  N7K-LAN(JAF1651ANDL) Gig 1/0/1 134 
  LAB_PESADO Gig 1/0/11 
  Arquitectura_Salones Gig 1/0/9 129 
  CIVIL_253 Gig 1/0/4 
  Arquitectura Gig 1/0/3 
  ING_CIVIL_DIR Gig 1/0/10 
  ING_CIVIL Gig 1/0/7 
  Ingenieria_Posgrado Gig 1/0/8 134 
  Biblio_Barragan Gig 1/0/2 
  Electronica_Edif_3 Gig 1/0/5 127 
  Barragan_3750>exit Connection closed by foreign host. 
  ]0;cesar@cesar-HP-Pavilion-15-Note 

我知道如何查找特定单词,但它可以在任何列中,因为这取决于终端长度。

回顾一下,我想找到单词 --More-- 并使用以下行将其删除。

有什么帮助吗?

谢谢。

更新:

这完成了工作:sed '/--More--/{N;N; s/--More--.*\n[ \t]*//}' 在期望脚本中,语法是:

send -- "sed '/--More--/{N;N; s/--More--.*\\n\[ \\t\]*//}' TablaCDP.dat > CDPyPuerto.dat \r"

答案1

sed

sed '/--More--/{s///;n;d;}'

等价awk的:

awk 'sub(/--More--/, "") {print; getline; next}; {print}'

答案2

Perl 也可以做到:

$ perl -pe '$_ = "" if($. > 1 and $_ =~ /Device ID Local Intrfce/); $_ =~ s/--More--//;'  input.txt   
Device ID Local Intrfce 
  BIOTERIO Gig 1/0/6 
  N7K-LAN(JAF1651ANDL) Gig 1/0/1 134 
  LAB_PESADO Gig 1/0/11 
  Arquitectura_Salones Gig 1/0/9 129 
  CIVIL_253 Gig 1/0/4 
  Arquitectura Gig 1/0/3 
  ING_CIVIL_DIR Gig 1/0/10 
  ING_CIVIL Gig 1/0/7 
  Ingenieria_Posgrado  
  Gig 1/0/8 134 
  Biblio_Barragan Gig 1/0/2 
  Electronica_Edif_3 Gig 1/0/5 127 
  Barragan_3750>exit Connection closed by foreign host. 
  ]0;cesar@cesar-HP-Pavilion-15-Note 

相关内容