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