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: Mon, 7 May 2018 09:48:15 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

Uma solução com bash, usando a dica do Mestre Julio de incluir uma linha extra
no final do arquivo para pegar o último bloco.

unset bloco linha_ip
while read linha
do
[[ "$linha" =~ ^[0-9] ]] && let linha_ip++
[ "$linha_ip" -eq 2 ] && {
        grep -q xen01 <<<"$bloco" &&
                { echo -e "$bloco";break;} ||
                { bloco=;linha_ip=1;}
        }
bloco+="$linha\n"
done < <(echo 1|cat  maquinas.txt -)


On 07-05-2018 01:05, Celso Macêdo address@hidden [shell-script] wrote:
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>
--------------------------------------------------------------------------------------------------------------


reply via email to

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