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.