Je suis assez paresseux mais avec une conscience professionnelle. Ça tombe bien, c’est comme cela qu’on trouve de chouettes manières de finir rapidement et bien son travail avant de retourner faire la sieste.

Dans le cadre de mon travail, je suis amené à gérer des tableaux, des listes et plein de trucs rébarbatifs.

Un collègue m’a fait donc découvrir awk et un autre sed qui sont des outils d’édition de texte. Qui sont à l’informatique ce que Platon est à la philosophie : c’est vieux mais qu’est ce que ça marche !

Bref, je vais lister dans cette catégorie des petites lignes qui pourraient aider des personnes qui, comme moi, ne seraient pas des développeurs et qui font des tâches rébarbatives quotidiennement.

Passer d’un tableau .csv à un fichier .wiki en une ligne

En général, il est assez aisé de convertir un tableau en tableau-texte (.csv). Ensuite, le transformer en tableau wiki peut être un peu ennuyeux surtout si on s’y met à la main. Un tableau en ‘‘medawiki’’ (.wiki, Markdown utilisé par Wikipédia, entre autres) est sous ce format :

{| 
|- 
| première ligne || seconde colonne  
|- 
| seconde ligne || seconde colonne 
|- 
|}

Quand notre fichier .csv est sous ce format :

première ligne, seconde colonne
seconde ligne, seconde colonne

Ce qui est assez facile à chipoter comme format. Bref, en une ligne de awk c’est fait :

 awk 'BEGIN { FS = "," ; print "{|" } ; {print "|-\n|" $1 " || " $2 " || " $3 " || " $4 "||" $5} ; END {print "|}"}' fichier.csv > fichier.wiki

Revenons un peu sur les éléments de cette ligne magique.

  • BEGIN : déclare une règle que awk va appliquer
  • FS = "," : ‘‘Field separator’’, c’est l’élément qui sépare les colonnes que l’on va remplacer dans la suite.
  • print "{|" : commence par écrire {| qui ouvre un tableau en Mediawiki
  • |-\n| : écrit ensuite |- qui est une séparateur de ligne, \n qui est un saut de ligne, | pour commencer notre ligne
  • $1 : écrit la valeur de la première colonne
  • "||" : écrit le séparateur de colonne

Et ainsi de suite, cela peut aller jusque plus de cinq valeurs en fonction du nombre de valeur de votre tableau original.

  • END : ce que awk va exécuter à la fin
  • print "|}" : ferme le tableau Mediawiki

  • fichier.csv > fichier.wiki : récupère le fichier.csv pour en faire un fichier.wiki selon la ligne que nous venons de voir.

Et voilà !

Colorer des cases récurrentes dans un tableau .wiki

Maintenant que nous avons un tableau qui est vachement chouette et bien fait, il est possible qu’on vous demande à le colorier. Par exemple, colorier toutes les valeurs X en vert et Y en rouge. C’est aussi très simple à faire ! Pour cela, nous allons utiliser un autre progamme antique : sed.

cat fichier.wiki | sed 's#|| Contre ||#|| style="background:green;color:white" | CONTRE ||#' | sed 's#|| Pour ||#|| style="background:red;color:white" | POUR ||#' | sed 's#|| Abstention ||#|| style="background:#ff4e4e;color:white" | ABSTENTION ||#' > nouveau_fichier.wiki

Ne fuyez pas !

Décorticons cette ligne.

  • cat fichier.wiki : cat est une commande qui affiche un fichier, elle est facultative, mais cela permet de voir le fichier modifié.
  • s#|| Contre ||#|| style="background:green;color:white" | CONTRE ||# : recherche une valeur || Contre || et la remplace par || style="background:green;color:white" | CONTRE || qui est la même case en Mediawiki avec un modification de style qui permet la coloration du fond et de la couleur du texte (pour que ça reste visible). # est un séparateur, un caractère qui sépare les expressions, il est possible de prendre le caractère que l’on veut du moment qu’on utilise le même par commande.
  • | : entre les sed est ce qu’on appelle un ‘‘tuyau’’ (pipe) permet de récupérer le résultat du programme précédent dans le programme suivant. Très pratique dans notre cas.
  • > nouveau_fichier : on a déjà vu ça plus haut : on crée en sortie un nouveau fichier appelé nouveau_fichier.

Et re-voilà !

Merci à celleux qui m’ont aidé avec ces commandes et les explications, ielles se reconnaitront. <3