Como posso obter SOMENTE os endereços IP dos meus logs do servidor Apache AWStats?

1

Estou tendo problemas para fazer com que meus endereços IP do servidor do meu site saiam do meio da confusão de outros dados em um log do servidor. Antes de eu abrir o Excel eu sei que há uma maneira de fazer isso porque Eu encontrei o oposto do que eu quero, removendo IP's da AWS:

cat web.log | awk '{$1=$2=$3=""}1' > web-no-ip.log

Um passo a passo ou uma folha de dicas para esse tipo de coisa seria incrível.

    
por TR3B 15.08.2013 / 00:14

1 resposta

1

Estou assumindo que os endereços IP estão no formato típico de X.X.X.X , em que X está entre [0,255]. Sabendo disso, o grep pode fazer o trabalho de forma admirável:

grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt

(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]) corresponderá a qualquer número entre 0 e 255, incluindo zeros à esquerda - por exemplo, 0, 255, 019, etc. Conforme escrito, no entanto, ele corresponderá a coisas como 1.1.1.1.5 (cinco octetos). Isso também não rastreia endereços IPV6.

Se você espera que os logs contenham APENAS endereços IP válidos que parecem X.X.X.X , e podemos ASSUMIR que X não será inválido, você pode usar uma expressão muito mais simples:

grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt
    
por 15.08.2013 / 00:40