Bonjour,
J'ai un fichier avec le format suivant :
toto champ1 champ2 champ3
toto champ1 champ2
toto champ1 champ2 champ3 champ4
Je veux compter le nbre d'occurences de chaque champ
avec un awk ?
merci
Bonjour,
J'ai un fichier avec le format suivant :
toto champ1 champ2 champ3
toto champ1 champ2
toto champ1 champ2 champ3 champ4
Je veux compter le nbre d'occurences de chaque champ
avec un awk ?
merci
oui je n'ai pas été assez explicite
le résultat attendu serait de la forme
toto;champ1;3 fois
toto;champ2;3 fois
toto;champ3;2 fois
toto;champ4;1 fois
Voici une possibilité :
J'ai rajouté un test sur le fait que la ligne du fichier commence par toto, ce qui est inutile au vu du fichier de test, mais sinon je ne vois pas à quoi servirait ce toto…
Code : Sélectionner tout - Visualiser dans une fenêtre à part awk '/^toto/{for(i=2;i<=NF;i++){a[$i]+=1}} END{for(champ in a){print "toto;" champ ";" a[champ] " fois"}}' fichier
Super merci, cela fonctionne
Et si à la place de toto, il s'agissait d'une variable, comment l'indiquer à awk ?
Bonjour
Code : Sélectionner tout - Visualiser dans une fenêtre à part awk -vlavariabledemoncoeur=toto '($1==lavariabledemoncoeur){ ... }'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ awk -vlavariabledemoncoeur=toto '($1==lavariabledemoncoeur){for(i=2;i<=NF;i++){a[$i]+=1}} END{for(champ in a){print lavariabledemoncoeur";" champ ";" a[champ] " fois"}}' fichier toto;champ1;3 fois toto;champ2;3 fois toto;champ3;2 fois toto;champ4;1 fois
Partager