sexta-feira, 10 de julho de 2015

Somando linhas com awk

Eu queria saber quantos bytes (octetos para os de tendências latinas) foram buscados pelo Apache por um grupo de máquinas. Descobri um pequeno truque com awk:

awk '{s+=$1} END {print s}'

Esse código soma valores e imprime o resultado no fim. Posso adicionar um parâmetro com o nome de um arquivo, ou posso usá-lo com um pipe:

grep -P "10\.208\S+" access_log | grep -Po "\d+$" | awk '{s+=$1} END {print s}'

O primeiro grep filtra um faixa de IPs (todos os que começam com 10.208); o segundo pega o último valor da linha (que é o número de bytes transmitidos); por fim, o awk soma os valores.

Nenhum comentário: