AWK para explorar seus arquivos de log de acesso

Uso global

Linha que corresponde a uma palavra específica:

awk '/foo1/' foo.txt

Imprime apenas campos específicos (divididos por caracteres de espaço em branco):

awk '{print $2,$4,$NF;}' file.txt

NF é o número total de campos em um registro

Imprima apenas o campo específico (dividido por “:”):

awk -F : '{print $2,$4;}' file.txt

access.log do apache2

Exibir endereço IP para um recurso específico:

"http://www.url.com/foo1" access.log.log|awk '{print $1;}'

Para contar o acesso exclusivo a um recurso específico:

awk -F'[ "]+' '$7 == "/foo1/image.jpg" { ipcount[$1]++ }
END { for (i in ipcount) {

printf "%15s - %dn", i, ipcount[i] } }'
/var/log/apache2/access.log
}
}

Para detectar caminhos inundados (conte quanto um ip tenta solicitar)

head -500 access.log | sed 's/[0-9]*//g' | awk '{url[$1$8]++} END{for (i in url) {print url[i], i}}' | sort -nr
tail -5000 access.log | sed 's/[0-9]*//g' | awk '{url[$1$8]++} END{for (i in url) {print url[i], i}}' | sort -n