[AWK][Tips] : calculer le cumul d’une colonne

Awk est un très bon outil. On peut l’utiliser soit de manière peu développée (oneliner) ou plus élaborée comme un vrai language de programmation. Généralement on l’utilise pour son côté conci sur une ligne.

Aujourd’hui je vous propose un classique de AWK à savoir calculer le cumul d’une colonne. Rien de bien sorcier et en plus ça permet de bien entrer dans le sujet. Je reviendrai plus tard sur les séparateurs mais on va se limiter à FS pour commencer. FS pour Fields Separator. Par exemple pour un fichier de type csv -FS= »; ». Ensuite on peut appeler les colonnes en fonction de leur ordre $1 = première colonne. Et $0 représente toute la ligne.

Ainsi avec un fichier contenant :

└─ $ ▶ cat fichier.txt 
toto;1;2;url
xxx;2;5;url2
yyy;2;6;url3

On a donc 3 lignes de 4 colonnes. On cherche à calculer la somme de la troisème colonne. Rien de plus simple :

# afficher le contenu du fichier
awk '{print $0} fichier.txt'

# pour afficher la troisième colonne uniquement
awk -FS ";" '{print $3}' fichier.txt

# pour calculer le cumul de la colonne 3
awk -FS ";" '{CUMUL += $3} END {print CUMUL}' fichier.txt

Donc là on y est :

  • on défini le séparateur de champs
  • on créé une variable CUMUL dans laquel on ajoute la valeur de la colonne 3 à chaque ligne
  • et en dernière ligne on affiche le contenu de la variable CUMUL

C’est simple non ?

Le gros intérêt c’est de pouvoir « piper » tout cela en appliquant avant des commandes bash, sed….

Promis dans pas longtemps on va revenir sur les FS, OFS, NR, ONR…

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s