com sed
:
sed '/--More--/{s///;n;d;}'
O awk
equivalente:
awk 'sub(/--More--/, "") {print; getline; next}; {print}'
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"
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
Tags awk scripting shell-script gawk