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

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

Re: [shell-script] SED - Como parar a consulta na N ocorrência


From: phfbettega
Subject: Re: [shell-script] SED - Como parar a consulta na N ocorrência
Date: Wed, 23 Aug 2017 10:40:23 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

Pessoal, me desculpem pelo sed que eu postei, é terrivelmente ineficiente.
Além de acumular todas as linhas com o ip só pra pegar as duas primeiras,
ainda por cima espera até o final do arquivo pra apresentar o resultado.
Pensei num sed que funcione como a opção -m do grep

sed -nr '/\<192.168.1.4\>/ {H;g;s/^((\n[^\n]+){2})/\1/;ta;d;:a;s/^\n//;p;q}' 
ips.txt

vai testando a cada acumulação no espaço reserva, se houver tantas repetições
indicadas nas chaves, imprime e sai, senão deleta o espaço padrão e inicia um 
novo ciclo.

Abraços Paulo

On 22-08-2017 11:05, address@hidden [shell-script] wrote:
Olá andrelucio, esse sed adiciona todas as linhas com o endereço no espaço 
reserva
e depois imprime até a ocorrência N que é o número do \n que fica fora do grupo.

sed -nr '/\<192.168.1.4\>/ H; $ {g;s/\n//;s/([^\n]+\n[^\n]+)\n.*/\1/p}' ips.txt

Abraços Paulo

On 22-08-2017 10:04, address@hidden [shell-script] wrote:
 > Opa, pessoal.
 >
 >
 > Seguinte, existe alguma forma de parar a consulta de uma determinada string 
na ocorrência N dessa consulta.
 >
 > Por exemplo:
 >
 >
 > O arquivo ips.txt tem esse conteúdo:
 >
 >
 > 192.168.1.4 (PC)
 > 192.168.0.25 (PC)
 > 192.168.1.4 (Smartphone)
 > 192.168.0.30 (Smartphone)
 > 192.168.1.40 (PC)
 > 192.168.1.4 (Server)
 > 192.168.1.10 (PC)
 > 192.168.1.50 (Smartphone)
 > 192.168.1.20 (PC)
 > 192.168.0.222 (Server)
 >
 >
 > O comando sed -n '/\<192.168.1.4\>/p' ips.txt retorna essa saída:
 >
 >
 > 192.168.1.4 (PC)
 > 192.168.1.4 (Smartphone)
 > 192.168.1.4 (Server)
 >
 >
 > Mas preciso que ele exiba somente a segunda ocorrência ou seja, essa saída:
 >
 >
 > 192.168.1.4 (PC)
 > 192.168.1.4 (Smartphone)
 >
 > Alguém poderia saberia como resolver isso com o SED?
 >
 >
 >
 > ----------------------------------------------------------
 > Enviado por: address@hidden
 > ----------------------------------------------------------


--------------------------------------------------------------------------------------------------------------
Enviado por: address@hidden
--------------------------------------------------------------------------------------------------------------


reply via email to

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