Toujours dans l’optique de remplacer Sed et Awk par Ruby, et après avoir vu les options -p et -l, on voit comment accéder facilement aux différentes colonnes d’un fichier.

Voici le fichier de données tout simple qui va nous servir aujourd’hui:

1 a
2 a
3 b
4 a
5 a
6 b
7 b
8 b
9 b

L’objectif est de calculer la somme des valeurs de la 1ère colonne, uniquement quand la 2e colonne affiche a. On pourrait bien sûr splitter la ligne ($_) pour obtenir nos champs, mais il y a plus rapide. En activant l’option -a de la ligne de commande, Ruby va automatiquement splitter chaque lignes du fichier de données dans la variable prédéfinie $F (pour Fields). On n’a donc rien à faire ;) et on peut se concentrer sur les calculs:

BEGIN { total = 0 }

total += $F[0].to_i if $F[1] == "a"

END { puts "Total: #{total}" }
[~]⇒ ruby -an test.rb < data.txt 
Total: 12

À demain.