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
Bonjour,
oui, s'il y a des champs, c'est avec awk.
on peut le faire en shell, mais ce sera plus rapide sur de très nombreuses lignes en awk.
ça signifie quoi pour toi ?compter le nbre d'occurences de chaque champ
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