Como ler linhas de logs e fazer um eco se elas contiverem uma certa string

0

Agora eu tenho isso:

while read p ; do
    if ("$p | awk 'print $5'") == "sshd" && ("$p | awk 'print $6'") == "Connection";do
        echo("$p")
    done
done < /log.txt

e o texto que eu quero detectar é "sshd" logo antes de um "[" e "Connection" após a string ":".

a linha de registros se parece com isso:

Sep 21 05:45:55 MY_MACHINE sshd[16251]: Connection from 76.127.218.159 port 41950
    
por ndfg201 02.05.2018 / 12:55

2 respostas

1

Isso pode ser feito simplesmente com um único comando awk :

awk '$5 ~ /^sshd/ && $6 == "Connection"' log.txt
    
por 02.05.2018 / 13:03
0

Você pode usar apenas awk :

awk '$5 ~ /^sshd\[\[0-9]+\]:$/ && $6 ~ /^Connection$/{print}' /log.txt

    
por 02.05.2018 / 13:01