Como encontrar uma palavra e excluí-la com a seguinte linha

0

Eu tenho usado awk em um script Expect para editar um arquivo de texto que contém informações sobre um switch. Até agora, o arquivo de texto é assim:

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 

Como o script manipula com saída de várias linhas, o rótulo --More-- é impresso no arquivo de texto, assim como o nome da coluna Device ID Local Intrfce é impresso duas vezes.

Eu quero que o arquivo tenha esta aparência:

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 

Eu sei encontrar uma palavra específica, mas ela pode estar em qualquer coluna, porque isso depende do tamanho do terminal.

apenas para recapitular, quero encontrar a palavra --Mais-- e excluí-la com a seguinte linha.

Alguma ajuda?

Obrigado.

Atualização:

este fez o trabalho: sed '/--More--/{N;N; s/--More--.*\n[ \t]*//}' no roteiro expect, a sintaxe é:

send -- "sed '/--More--/{N;N; s/--More--.*\n\[ \t\]*//}' TablaCDP.dat > CDPyPuerto.dat \r"
    
por Cesar Alejandro Villegas Yepez 08.02.2017 / 16:42

2 respostas

2

com sed :

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

O awk equivalente:

awk 'sub(/--More--/, "") {print; getline; next}; {print}'
    
por 08.02.2017 / 16:51
0

Perl também pode:

$ 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 
    
por 08.02.2017 / 21:05