Skip to content

Instantly share code, notes, and snippets.

@dcpc007
Last active February 1, 2018 12:17
Show Gist options
  • Save dcpc007/cd81bf3167218102dac85a85d08eb823 to your computer and use it in GitHub Desktop.
Save dcpc007/cd81bf3167218102dac85a85d08eb823 to your computer and use it in GitHub Desktop.
Identifier quelle ligne apparait le plus dans un log
#!/bin/bash
# input = input.txt
# optimisation en utilisant l'outils GNU parallel
cd /data/tmp/bigsort
# découpage gros fichier (renomme en input-XX)
split -l 1000000 split-
# suppression de l'horodatage en début de chaque ligne de log (un seul champ)
ls split-* | parallel -j7 "cat {} | cut -d' ' -f2- > {}-input"
# tri de chaque bloc de fichier
ls *-input | parallel -j7 "sort {} > {}-sorted"
# merge des bloc triés
sort -T /data/tmp -m *-sorted > sorted-final
# calcul des lignes uniques et affichage de la ligne la plus fréquente
uniq -c sorted-final > sorted-final-uniq
sort -n sorted-final-uniq > sorted-final-uniq-result
tail -n1 sorted-final-uniq-result
# nettoyages (à placer au fur et à mesure de préférence)
rm *-sorted
rm *-input
rm split-*
rm sorted-final
rm sorted-final-uniq
@dcpc007
Copy link
Author

dcpc007 commented Feb 1, 2018

But :
Prendre un log volumineux et identifier quelle ligne revient le plus souvent
Adaptations possible pour rajouter un filtre sur une colonne ou un champ par exemple

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment