Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

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

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#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