OVH Cloud OVH Cloud

compter un nombre d'occurences

3 réponses
Avatar
octane
Bonjour

j'ai un fichier de type:

mot
mot
(...)
mot
autre_mot
autre_mot
(...)
autre_mot
etc..

et je souhaite obtenir
mot <nombre_d'occurence>
autre_mot <nombre d'occurence>
etc..

uniq -c fichier
correspond presque a ce queje souhaite faire, mais uniq -c me l'affiche
sous la forme
<nombre_d'occurence> mot
<nombre_d'occurence> autre_mot
etc..

Il est possible d'obtenir ce que je souhaite dans la bonne forme?

Merci

3 réponses

Avatar
octane
uniq -c fichier
correspond presque a ce queje souhaite faire, mais uniq -c me l'affiche
sous la forme
<nombre_d'occurence> mot
<nombre_d'occurence> autre_mot
etc..

Il est possible d'obtenir ce que je souhaite dans la bonne forme?

Je me reponds a moi meme.

uniq ne possede pas la bonne option, mais il existe d'autres outils...
uniq -c fichier | awk '{print $2" "print $1}'
fait ca tres bien

Avatar
Thierry Boudet
On 2006-08-18, wrote:

Il est possible d'obtenir ce que je souhaite dans la bonne forme?



$ tagada | awk '{print $2, $1}'


--
C'était en attente de reformattage, sauf que maintenant, j'ai un
probleme, pour l'utiliser va falloir que je reboot, il n'y a pas de
swapoff ...
*** NLS dans f.m.b.l : "ooh, baby make me boot one more time" ***


Avatar
Stephane Chazelas
On 18 Aug 2006 01:39:14 -0700, wrote:
uniq -c fichier
correspond presque a ce queje souhaite faire, mais uniq -c me l'affiche
sous la forme
<nombre_d'occurence> mot
<nombre_d'occurence> autre_mot
etc..

Il est possible d'obtenir ce que je souhaite dans la bonne forme?

Je me reponds a moi meme.

uniq ne possede pas la bonne option, mais il existe d'autres outils...
uniq -c fichier | awk '{print $2" "print $1}'
fait ca tres bien


Note que pour uniq, il faut que le fichier soit trié (que les
lignes similaires se suivent).

Si ce n'est pas le cas, tu peux soit faire:

sort fichier | uniq -c

Soit:

awk '{n[$0]++} END {for (i in n) print n, n[i]}' fichier

--
Stephane