grep para exibir todos os IPs em um arquivo de texto (linux)

0

Estou escrevendo um script para procurar um ping de um IP estrangeiro certian, mas estou tendo alguns problemas para entender como formatar meu comando "grep". Dentro do meu arquivo de texto está a saída do comando "netstat anp" . No Windows, consegui isso com o seguinte comando:

grep -oP (\d{1,3}\.){1,3}\d{1,3} inc.txt  

A saída no arquivo de texto é formatada como tal:

Active Internet connections (w/o servers)  
Proto Recv-Q Send-Q Local Address           Foreign Address         State        
tcp        0      1 172.18.24.12:51699      72.21.91.17:https       FIN_WAIT1    
tcp        0      1 172.18.24.12:55154      71.19.176.223:https     FIN_WAIT1  
tcp        0      1 172.18.24.12:59926      173.194.46.89:http      FIN_WAIT1  

(Eu planejo filtrar o endereço local). Mas eu não consigo descobrir como eu deveria estar formatando este comando para o meu script bash. Eu não suponho que alguém aqui possa me ajudar com isso? A ajuda é sempre apreciada.

    
por user7980 25.06.2014 / 21:20

2 respostas

0

Apenas citando o regex parece funcionar para mim:

grep -oP '(\d{1,3}\.){1,3}\d{1,3}' inc.txt

Editar por barlop -

Ou, como Scott deu, um pouco mais específico, '(\d{1,3}\.){3}\d{1,3}' , se você quiser fazer com que seja exatamente 4 octetos, nem mais nem menos.

    
por 25.06.2014 / 21:38
0

Um método de descoberta sucessiva que funciona a partir de um script ou de um shell é o seguinte:

Por exemplo, suponha que estamos procurando por 72.21.95.46

grep ' 72\.' netstat.txt will give you all the ip addresses that start with 72.

você pode filtrar essa saída com greps subsequentes para limitar os IPs a uma família ou a um IP exclusivo:

do shell, você pode usar "repetir o comando anterior com bang bang":

!! | grep 21\.

de um script

grep ' 72\.' | grep 21\. 

e assim por diante.

Para obtê-lo de uma só vez, basta dizer

grep 72.21.95.46 netstat.txt

os pontos serão expandidos para qualquer caractere único

se você está voando ônibus espaciais usar:

grep '72\.21\.95\.46' netstat.txt
    
por 25.06.2014 / 21:44

Tags