Procura por uma string desconhecida entre dois colchetes

0
Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ssh2

Estou procurando pela palavra senha. Quando o encontrar, quero encontrar algo associado ao número sshd[67299] e imprimi-lo.

    
por Sid Norton 25.10.2016 / 21:01

2 respostas

0

$ echo "Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ss" | sed 's/.*\[\(.*\)\].*//'
67299

(descartar tudo, par o que está entre parênteses).

    
por 25.10.2016 / 21:06
0

Isso deve funcionar para você

grep password my_log.txt | sed 's/.*sshd\[\(.*\)\].*//'

grep password my_log.txt obtém todas as linhas com senha.

sed 's/.*sshd\[\(.*\)\].*//' encontra o [] após sshd e obtém o PID dentro dele.

Você não especificou isso em sua pergunta, mas também pode canalizar isso para sort -u para filtrar duplicatas.

Atualizar

Embora menos legível, na minha opinião, você também poderia fazer tudo em uma linha sed .

sed -e '/password/!d;s/.*sshd\[\(.*\)\].*//' my_log.txt
    
por 25.10.2016 / 21:44