Xavier Nayrac

Rubyiste accro au TDD, serial blogger, apprenti data scientist, heureux utilisateur de Vim, accordéoniste.
Si vous vous sentez particulièrement généreux, suivez moi sur Twitter.

Remplacer Sed et Awk par Ruby 12: Numéro de ligne

| Comments

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:

data.txt
1
2
3
4
5
6
7
1
2
3
.
.
.
33

L’idée est de ne prendre qu’une ligne sur dix. Voilà le script:

test.rb
1
puts $_ if $. % 10 == 0

Ou, en utilisant la gem English:

test1.rb
1
2
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:

1
2
3
4
[~]⇒ 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.

Articles connexes

Commentaires