Remplacer Sed et Awk par Ruby 12: Numéro de ligne
Après avoir vu l’utilité de la gem English, on voit aujourd’hui une utilisation des numéros de ligne pour créer un échantillon de données.
La variable prédéfinie $.
contient le numéro de la ligne en cours de
traitement. Une utilisation de cette variable, que j’aime beaucoup, est
la création d’un petit échantillon (sample) de données, à partir d’un
long fichier.
Pour la démonstration, prenons un fichier de données de 33 lignes:
1
2
3
.
.
.
33
L’idée est de ne prendre qu’une ligne sur dix. Voilà le script:
puts $_ if $. % 10 == 0
Ou, en utilisant la gem English:
BEGIN { require 'English' }
puts $LAST_READ_LINE if $INPUT_LINE_NUMBER % 10 == 0
La ligne en cours est affichée seulement quand le numéro de la ligne est un multiple de 10:
[~]⇒ ruby -n test.rb data.txt
10
20
30
Intéressant quand on veut se créer rapidement un petit jeu de données pour tester quelque chose…
À demain.
/ / / / / / / / / /
« Les algorithmes génétiques démystifiés 45: Économie, calcul du score ---//---
Remplacer Sed et Awk par Ruby 13: Séparateurs en sortie »