regexp onliner


La puissance de la ligne de commande est de retour, je vous propose une one-liner commande, que j’ai élaboré pour réaliser des comptage d’occurrences dans un fichier texte.




Le fichier à traiter n’est autre que celui qui me sert à compter le nombre de consultation d’un article. Il est constitué de la façon suivante :

titre de l'article n°1;url de l'article n°1
titre de l'article n°1;url de l'article n°1
titre de l'article n°10;url de l'article n°10
titre de l'article n°2;url de l'article n°2
titre de l'article n°2;url de l'article n°2
titre de l'article n°2;url de l'article n°2

Il s’incrémente d’une ligne, à chaque consultations d’un article.



Je veux effectuer:


  • un comptage du nombre d’occurrences,

  • une inversion des champs titre et url.


La solution en une ligne avec un petit grep et des expressions régulière en Perl :

grep -h "article" <NOM DU FICHIER> | sort | uniq -c | perl -pe 's/^\s*([0-9]+) (.*).*/$1;$2/' |sort -rn

Et cette commande magique nous sort le résultat suivant :

3;url de l'article n°2;titre de l'article n°2
2;url de l'article n°1;titre de l'article n°1
1;url de l'article n°10;titre de l'article n°10

Et voilà !