Valeu, Paulo!!!
Agora eu vou estudar sua solução, pois não conhecia esses detalhes todos do sed.
Se alguém tiver outra alternativa usando outro comando, ou até um sed
diferente, eu quero aprender rsrsrsrsrs
[]'s
Celso
Em 6 de maio de 2018 21:53, address@hidden <mailto:address@hidden> [shell-script]
<address@hidden <mailto:address@hidden>> escreveu:
__
É verdade, no último bloco de texto não funciona porque a última linha
não começa com número.
Depois de carregar a última linha (algum comando 'n'), o comando
's/^[0-9]/&/' falha, então ao invés de ir para a marca 'b',
volta para a marca 'a', mas o arquivo já acabou, então o comando 'n'
não lê mais nenhuma linha e encerra o script sed naquele ponto.
O conserto é colocar um teste pra saber se a última linha foi lida.
Se foi, pula para a marca 'b'.
'/^[0-9]/ {:a;H;$bb;n;s/^[0-9]/&/;tb;ba;:b;x;s/homologa/&/;tc;n;ba;:c;p;q}'
(talvez eu tenha tomado o caminho mais complicado nesse sed rs)
Outra falha pode ser se alguma linha das máquinas começar com número,
nesse caso o casamento do ip tem que ser mais específico.
Abraços Paulo
On 06-05-2018 18:40, Celso Macêdo address@hidden <mailto:address@hidden>
[shell-script] wrote:
> Paulo,
>
> Quase isso....
>
> Mas não funciona com a última... "homologa"
>
> []'s
> Celso
>
> Em 6 de maio de 2018 11:17, address@hidden <mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>> [shell-script]
> <address@hidden <mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>>> escreveu:
>
> __
>
> Olá Celso, solução com sed.
>
> sed -nr '/^[0-9]/ {:a;H;n;s/^[0-9]/&/;tb;ba;:b;x;s/xen01/&/;tc;n;ba;:c;p;q}' maquinas.txt
> Abraços Paulo
>
>
>
> On 05-05-2018 23:07, Celso Macêdo address@hidden <mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>> [shell-script] wrote:
> > Boa noite, pessoal!
> >
> > Supondo que tenhamos o arquivo maquinas.txt abaixo:
> >
> > 10.10.1.1
> >
> > maquina 1 - zen01
> >
> > maquina 2 - web01
> >
> > maquina 3 - trend01
> >
> >
> > 10.10.1.5
> >
> > maquina 4 - xen01
> >
> > maquina 5 - rede01
> >
> > maquina 6 - fs1c1
> >
> > maquina 7 - arcserve
> >
> >
> > 10.10.1.10
> >
> > maquina 8 - teste
> >
> > maquina 9 - desenvolvimento
> >
> >
> > 10.10.1.15
> >
> > maquina 10 - homologa
> >
> > Como fazer uma busca numa determinada expressão e apresentar todo um
trecho de texto que está entre o
> ip e uma
> > linha vazia?
> >
> > Exemplo: uma busca de xen01 deve mostrar:
> >
> > 10.10.1.5
> >
> > maquina 4 - xen01
> >
> > maquina 5 - rede01
> >
> > maquina 6 - fs1c1
> >
> > maquina 7 - arcserve
> >
> > OBS: Você não sabe quantas linhas antes e quantas depois precisará
exibir para alcançar o resultado
acima,
> > pois o número de máquinas é variável
> >
> > Valeu!!!
> >
> > Celso
> >
> >
> > ----------------------------------------------------------
> > Enviado por: =?UTF-8?Q?Celso_Mac=C3=AAdo?= <address@hidden
<mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>>>
> > ----------------------------------------------------------
>
>
>
> ----------------------------------------------------------
> Enviado por: =?UTF-8?Q?Celso_Mac=C3=AAdo?= <address@hidden
<mailto:address@hidden>>
> ----------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Enviado por: =?UTF-8?Q?Celso_Mac=C3=AAdo?= <address@hidden>
--------------------------------------------------------------------------------------------------------------