Uniligne en Ruby
Par jb le lundi 20 octobre 2008, 15:32 - Des pingouins et des hommes - Lien permanent
Mes listings d'étudiants me sont fournis au format suivant
... DUPONT,PAUL DURAND,PIERRE ...
La présentation "tout en majuscules" ne me plaît pas beaucoup ; je préfère une majuscule en début de nom et en début de prénom. Plutôt que m'amuser à tout faire à la main, j'ai écrit un petit uniligne qui fait tout d'un coup.
Pour obtenir un comportement uniligne en ruby, on utilise plusieurs options sur la ligne de commande (l'option -e est obligatoire). Les principales options sont les suivantes :
-epermet de créer un uniligne, en spécifiant les instructions depuis la ligne de commande (les instructions sont placées entre apostrophes pour éviter que le shell ne les interprète).-nRuby place les instructions dans une boucle (while gets ... end) en utilisant le fichier (dont le nom et placé en argument sur la ligne de commande) comme source.-pest identique à-navec en plus un affichage de$_(la ligne lue) à la fin de la boucle.
L'uniligne obtenue est le suivant :
ruby -ne 'puts $_.split(",").each{|n| n.capitalize!}.join(",") ' TD.csv > TDmaj.csv
La ligne lue (dans le fichier TD.csv) est découpée en utilisant split puis une boucle each permet de traiter chaque élément avec capitalize! pour passer que la première lettre en majuscule. Le contenu du tableau (issue du each) et transformé en une chaîne en utilisant join avec la virgule comme caractère de jointure. Une redirection finale (> TDmaj.csv) envoie tout ça dans un nouveau fichier.
Commentaires
I ran across can
Excellent blog post. Youve got a design here thats not too flashy, but makes a statement as big as what youre saying. Thanks for sharing. I will bookmark this website.
Wow. I've been reading your stuff for about a year now and this is basically the only sh*t I dont agree with. Give atleast a little credit where credit is due. Kobe got his ass kicked by this so called fluke. So what? Chill out. No one said the Rockets were the best team.
Don't know what is wrong what is rite but i know that every one has there own point of view and same goes to this one