Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/12/2012, à 20:37

themadfrench

[Resolu] Commande awk + uniq, pipe non fonctionnel ?

Hello tout le monde,

Voilà j'ai dans un fichier nommé "liste_process" des lignes de textes qui ressemblent à ceci :

Je suis le processus 5210 : 1
Je suis le processus 5212 : 1
Je suis le processus 5213 : 1
Je suis le processus 5210 : 2
Je suis le processus 5212 : 2
Je suis le processus 5213 : 2

etc

Je veux tout bêtement compter le nombre de processus recensés (3 dans l'exemple)
Voici la suite de commande que j'ai fait dans le shell :

cat liste_process | awk '{print $5}' | uniq | wc -l

Et ça m'affiche 6 (pour l'exemple) au lieu de 3 ! (en effet la cmd uniq ne fait rien alors qu'il devrait supprimer les lignes identiques...) Je ne comprends pas mon erreur...

Si vous savez d'où ça vient merci de m'aider big_smile

Dernière modification par themadfrench (Le 18/12/2012, à 21:47)

Hors ligne

#2 Le 18/12/2012, à 21:03

pingouinux

Re : [Resolu] Commande awk + uniq, pipe non fonctionnel ?

Bonsoir,
C'est parce que les lignes identiques ne sont pas adjacentes. Essaye ceci :

awk '{print $5}' liste_process | sort -u | wc -l

Hors ligne

#3 Le 18/12/2012, à 21:28

themadfrench

Re : [Resolu] Commande awk + uniq, pipe non fonctionnel ?

pingouinux a écrit :

Bonsoir,
C'est parce que les lignes identiques ne sont pas adjacentes. Essaye ceci :

awk '{print $5}' liste_process | sort -u | wc -l

Ha ok merci, je ne savais pas qu'ils fallait qu'elles soient adjacentes ^^

Et ta commande marche nickel merci beaucoup wink

Hors ligne

#4 Le 18/12/2012, à 22:33

pingouinux

Re : [Resolu] Commande awk + uniq, pipe non fonctionnel ?

Il y a même plus simple :

sort -u -k 5,5 liste_process | wc -l

Hors ligne

#5 Le 19/12/2012, à 02:32

nesthib

Re : [Resolu] Commande awk + uniq, pipe non fonctionnel ?

ou encore :

awk '!_[$5]++{p++} END {print p}' liste_process

(pour chaque ligne, si $5 n'est pas connu on incrémente p)

Comme ça pas besoin de trier ton fichier wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne