Un peu de AWK avec les logs Apache
J’utilise assez peu AWK sur Linux. Je préfère souvent faire du PHP-CLI. Cette commande peut toutefois rendre d’inestimables services, même si elle n’est pas toujours simple à comprendre.
J’ai voulu comptabiliser, à partir d’un fichier de logs Apache, le nombre d’accès par User-Agent.
J’ai dû combiner plusieurs commandes.
cut -f 6 -d '"' /var/log/httpd/extime-access_log|awk '{arr[$0]++;}END{for (i in arr) {print arr[i],"\t",i;}}' | sort -n -r > /home/extime-ua.tsv
Explications
- cat affiche le contenu du fichier de log.
- cut récupère la 6e colonne (-f 6) de la ligne en utilisant le guillemet comme délimiteur (-d ‘ »‘).
- arr est un tableau associatif indicé par la valeur du User-Agent.
- arr[$0]++ permet la comptabilisation d’éléments par User-Agent.
- La commande sort, à l’aide de -n et -r, opère un tri décroissant sur le nombre présent au début de la ligne de résultats.