Aujourd’hui on voit comment changer le séparateur de champ à l’aide de l’option -F.

Reprenons le fichier de données du dernier article, ajoutons un séparateur de champ, par exemple la virgule (,) et salissons-le quelque peu:

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

Le script du dernier article ne fonctionnera plus, puisque jusqu’ici nous supposions que les champs étaient séparés par des espaces, ce qui n’est plus le cas.

En admettant que les champs seront séparés par des virgules, il faut effectuer un petit changement dans notre script, pour nettoyer le second champ:

BEGIN { total = 0 }

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

END { puts "Total: #{total}" }

Et pour que Ruby sépare bien les champs en tenant compte des virgules, il faut lui passer l’option -F, suivie d’une regex (sans les //) décrivant le séparateur:

[~]⇒ ruby -an -F, test.rb < data.txt 
Total: 12

Et voilà.

À demain.