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 27/04/2013, à 19:47

sab113

Trier avec les commande [Résolu]

Bonsoir à tous,


j'aimerais sollicité votre aide sur

en fait j'ai un fichier composé de plusieurs colonnes.
Pour chaque motif de la colonne1 (mot1, mot2...) sont accompagnés de plusieurs résultats  dans la colonne 2.
Exemple

colonne1 | colonne2
mot1        | 0.68
mot1        | 0.55
.............................
mot1        |1.55
mot2        |0.65
mot2        |1.65
.............................
mot2        |0.69
........................

et j'aimerais en fait faire le tri décroissant pour chaque motif (mot1, mot2...). et afficher que les motifs avec un score le plus élevé.
Exemple de résultat:

colonne1 | colonne2
mot1        |1.55
mot2        |1.65

mais je ne sais pas du tout comment je procéder sous commande shell.
Pourriez vous svp m'aider.
Je vous remercies à l'avance

Dernière modification par sab113 (Le 28/04/2013, à 10:26)

Hors ligne

#2 Le 27/04/2013, à 20:54

pingouinux

Re : Trier avec les commande [Résolu]

Bonsoir,
Pour un fichier qui se présente ainsi

$ cat i
mot1          0.68
mot2         0.65
mot1          0.55
mot1         1.55
mot2         1.65
mot2         0.69

tu peux faire ceci

$ fic=i;while read col1 col2;do grep "$col1" "$fic"|sort -rn -k2|head -1 ;done < <(sort -k1,1 -u "$fic")
mot1         1.55
mot2         1.65

Hors ligne

#3 Le 27/04/2013, à 23:01

sab113

Re : Trier avec les commande [Résolu]

Merci de m'avoir répondu pingouinux , j'ai essayé

$ fic=i;while read col1 col2;do grep "$col1" "$fic"|sort [b]-t '|' [/b]-rn -k2|head -1 ;done < <(sort [b]-t '|'[/b] -k1,1 -u "$fic")

pour spécifier le séparateur de champ '|' mais je n'arrive pas à les triés comme ça

mot2|1.65
mot1|0.68
mot2|0.65

Hors ligne

#4 Le 28/04/2013, à 01:16

pingouinux

Re : Trier avec les commande [Résolu]

Essaye ceci :

fic=i;while read col1 col2;do grep "$col1" "$fic"|sort -rn -k3|head -1 ;done < <(sed 's/|/ | /' "$fic"|sort -k1,1 -u)

Hors ligne

#5 Le 28/04/2013, à 09:07

credenhill

Re : Trier avec les commande [Résolu]

hello

$ awk -F'|' '/^col/ {print; next} /^mot/ && $2 > t[$1] {t[$1]=$2} END{for (n in t)print  n, t[n]}' fichier
colonne1 | colonne2
mot2         1.65
mot1         1.55
$ 

Hors ligne

#6 Le 28/04/2013, à 10:14

sab113

Re : Trier avec les commande [Résolu]

Merci beaucoup pingouinux smile
ET merci également credenhill pour vos réponses smile

Hors ligne