shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Como pegar uma parte do texto(não uma linha) em um ar


From: phfbettega
Subject: Re: [shell-script] Como pegar uma parte do texto(não uma linha) em um arquivo que contém uma expressão
Date: Sun, 6 May 2018 21:53:03 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

É 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 [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> [shell-script] <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> 
[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>>
     > ----------------------------------------------------------



--------------------------------------------------------------------------------------------------------------
Enviado por: =?UTF-8?Q?Celso_Mac=C3=AAdo?= <address@hidden>
--------------------------------------------------------------------------------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]