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 12/10/2010, à 18:37

Silmarillion

Trier un fichier

Bonjour à tous smile

J'ai un DM à faire sur UNIX, et je bloque sur la toute dernière question (forcément).
Il s'agit de trier le fichier suivant ( :

fichier fruits a écrit :

12   Paris    poires    3,5
8    Nice    oranges    5,4
7    Paris    raisins    12,2
45    Angers    pommes    3
16    Lyon    poires    3,8
63    Lyon    raisins    8
56    Lyon    oranges    5,8
63    Angers    pommes    1,5
66    Angers    oranges    5,4
4    Rennes    bananes    10
78    Nice    pommes    3,1
14    Rennes    poires    4
87    Angers    poires    3,9
11    Nice    poires    3,3
56    Angers    raisins    11,5
78    Paris    bananes    8,3
8    Rennes    raisins    14
99    Nice    raisins    11,6
45    Lyon    pommes    3,3
78    Nice    bananes    8,6
48    Lyon    bananes    8,3
78    Lyon    bananes    8,1

Mais attention : il faut le trier selon la troisième colonne, et en cas d'égalité, selon la deuxième. Je me doute qu'il faut un sort et un cut.
Je sais isoler la troisième colonne par un cut, puis la trier, mais du coup je perds le reste... j'ai rien trouvé dans les man de cut et sort. peut etre qu'il faut utiliser une autre commande? si vous pouviez me donner un indice ce serait sympa smile

Hors ligne

#2 Le 12/10/2010, à 18:43

AnsuzPeorth

Re : Trier un fichier

Bjr,
Tu as bien lu le man sort smile

-k, --key=POS1[,POS2]
              start a key at POS1, end it at POS2 (origin 1)

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 12/10/2010, à 18:46

Silmarillion

Re : Trier un fichier

je venais de le trouver! mais avec 'info sort' parce que le man est pas clair, j'étais passé à coté effectivement.
Merci bien pour la réponse en tout cas wink

Hors ligne

#4 Le 12/10/2010, à 19:07

Silmarillion

Re : Trier un fichier

Yihaaaa! J'ai un peu galéré, parce qu'il faut trier selon la troisième colonne, PUIS la deuxième. Mais un $ sort -k 3.1,3.0 -k 2.1,2.0 fruits fonctionne.

En revanche j'ai pas compris les exemples suivants : sort -k 3b et sort -k 2.2n
A quoi servent le b et le n????

Hors ligne

#5 Le 12/10/2010, à 19:22

AnsuzPeorth

Re : Trier un fichier

sort -k 3.2

Ne suffit pas ?


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#6 Le 12/10/2010, à 19:28

Silmarillion

Re : Trier un fichier

non sort 3.2 tri à partir du 2ème caractère du troisième champ.
et sort 3,2 ne fonctionne pas.
meme sort  -k 3 -k 2 ne fonctionne pas.

Hors ligne

#7 Le 12/10/2010, à 19:56

AnsuzPeorth

Re : Trier un fichier

Silmarillion a écrit :

non sort 3.2 tri à partir du 2ème caractère du troisième champ.

J'avais pas lu le man en entier

...!?

EDIT:message modifier, j'ai pas les yeux en face des trous smile

Dernière modification par AnsuzPeorth (Le 12/10/2010, à 19:58)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#8 Le 12/10/2010, à 21:04

ehmicky

Re : Trier un fichier

Silmarillion a écrit :

Yihaaaa! J'ai un peu galéré, parce qu'il faut trier selon la troisième colonne, PUIS la deuxième. Mais un $ sort -k 3.1,3.0 -k 2.1,2.0 fruits fonctionne.

En revanche j'ai pas compris les exemples suivants : sort -k 3b et sort -k 2.2n
A quoi servent le b et le n????

En fait, je crois que rajouter des lettres à la fin permet de faire comme si l'option avec cette lettre était activée, mais seulement pour le champs indiqué : donc option -b (relative aux leading blanks) activée pour le tri du troisième champs et option -n (relative au tri numérique et non alphabétique) activée pour le tri du deuxième champs. Rajoute un "r" (reverse) à la fin d'un champs et tu vas comprendre vite. C'est d'ailleurs un point assez puissant de cet commande d'ailleurs je trouve.

Maintenant, c'est moi-même qui ne comprends plus sort -k, parce que je pensais que la notation -k 3.1,3.6 signifiait par exemple "Trier en fonction du troisième champs, à partir de son premier caractère jusqu'à son 6ème caractère." En sachant que la deuxième partie après la virgule est facultative et est par défaut la fin du champs (troisième champs ici). Mais je vois que tu utilises 3.0 et 2.0, à quoi fait référence ce 0 ? Merci de m'expliquer si tu vois ce que je veux dire smile

Dernière modification par ehmicky (Le 12/10/2010, à 21:07)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#9 Le 13/10/2010, à 09:45

Silmarillion

Re : Trier un fichier

merci pour l'explication smile
Le 0  signifie aussi "jusqu'a la fin du champs". Donc c'est vrai que ça revient au meme de ne rien mettre wink

Hors ligne

#10 Le 13/10/2010, à 09:58

Postmortem

Re : Trier un fichier

Bonjour,
En fait, cela aurait suffit :

sort -k 3,3 -k 2,2 fruits

Il faut préciser 3,3 par exemple car sinon, le tri se fait jusque la fin de la ligne, dans ce cas il se fait que sur le 3ème champ.
Par contre, pas besoin de préciser 3.1,3.0 car pour le début de la clé de tri, par défaut c'est .1 et pour la fin, c'est .0 (.0 signifiant le dernier caractère du champ)
Enfin si j'ai bien compris le man !

Dernière modification par Postmortem (Le 13/10/2010, à 11:26)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne