Pare o grep após um resultado no Solaris

4

Eu preciso retornar o valor mais recente de um arquivo de log. Eu sei que esse valor sempre estará perto do final do arquivo de log, e eu só quero um resultado.

No Ubuntu, eu consegui isso com tac dhcp.log | grep macaddress -m 1 , e no Solaris eu quase repliquei isso com tail -r dhcp.log | grep macaddress , mas ele percorre todo o arquivo, que é bem grande e leva muito tempo. Existe alguma maneira de matar o grep após o primeiro resultado para que ele não seja executado em todo o arquivo?

    
por John Moffitt 18.08.2016 / 02:28

2 respostas

4

Se você tiver o GNUgrep instalado (por exemplo, /usr/bin/ggrep ou /opt/gnu/bin/grep no Solaris 11, /opt/sfw/bin/ggrep no Solaris 10), você terá o sinal -m .

Em vez de grep , você pode usar sed

sed -n '/macaddress/{ p
q
}'
    
por 18.08.2016 / 02:44
4

Aqui está uma solução alternativa baseada em awk :

tail -r file | nawk '/macaddress/ {print;exit}'
    
por 18.08.2016 / 03:23

Tags