Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#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

Haut de page ↑