Index de tri

Le
danrob
Pour un Applescript je cherche a trier un tableau via do shell script
qui donne comme résultat l'index de tri et non le tableau trié.
La commande 'sort' n'a pas d'option pour ça.
Y-a-t-il une autre commande, rien trouvé dans man ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patpro ~ patrick proniewski
Le #19985471
In article (Daniel Robillard) wrote:

Pour un Applescript je cherche a trier un tableau via do shell script
qui donne comme résultat l'index de tri et non le tableau trié.
La commande 'sort' n'a pas d'option pour ça.
Y-a-t-il une autre commande, rien trouvé dans man ?



ce que tu cherches à obtenir c'est donc la liste des numéros de ligne
dans l'ordre obtenu après le tri. C'est bien ça ?

J'ai un bout de solution, quick&dirty :

soit une table /tmp/table :

$ cat /tmp/table
B 123 A 789 /
C 456 +

tu dois ajouter un numéro de ligne :

$ awk '{print NR" "$0}' /tmp/table
1 B 123 2 A 789 /
3 C 456 +

tu dois ensuite faire ton tri, par exemple sur la colonne 2 (B,A,C) :

$ awk '{print NR" "$0}' /tmp/table | sort --key=2
2 A 789 /
1 B 123 3 C 456 +

Pour finir, tu ne veux afficher que la liste des numéros de ligne :

$ awk '{print NR" "$0}' /tmp/table | sort --key=2 | awk '{print $1}'
2
1
3

Si tu tries sur la colonne de nombres :

$ awk '{print NR" "$0}' /tmp/table | sort --key=3 | awk '{print $1}'
1
3
2

et sur la colonne de signes :

$ awk '{print NR" "$0}' /tmp/table | sort --key=4 | awk '{print $1}'
3
2
1


patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133
danrob
Le #19998041
patpro ~ patrick proniewski
ce que tu cherches à obtenir c'est donc la liste des numéros de ligne
dans l'ordre obtenu après le tri. C'est bien ça ?

J'ai un bout de solution, quick&dirty :



Merci mais trop dirty pour moi, je veux garder les mains propres ;-)

En fait j'ai ce tri en Applescript mais avec plus de 10000 lignes ça
rame trop.

J'ai trouvé une solution avec un tri direct.
Toutefois y'a un truc bizarre qui me bloque.
Si mes données sont directement fournies en constante dans une variable
le tri est bon.
Par contre si elles sont générées à partir de champs de iView MediaPro
la sortie est identique à l'entrée.
Que le texte soit en Unicode ou pas.

do shell script "sort -f -t " & return & " " & TempFile

Mac OS 10.4.11, Applescript 1.10.7
danrob
Le #19998481
Daniel Robillard
Toutefois y'a un truc bizarre qui me bloque.
Si mes données sont directement fournies en constante dans une variable
le tri est bon.
Par contre si elles sont générées à partir de champs de iView MediaPro
la sortie est identique à l'entrée.



J'ai trouvé.

Quand je mets le texte en constante il s'avère que le saut de ligne est
LF (Ascii 10).
Or dans la commande 'sort' le délimiteur de champ est 'return" soit CR
(Ascii 13) et pourtant le tri est fait.

Si j'utilise LF pour générer le texte par programme et CR comme
séparateur de champs pour 'sort' alors le tri fonctionne.

Viscieux n'est-il pas ?
francois.jacquemin
Le #20136571
Daniel Robillard
Pour un Applescript je cherche a trier un tableau via do shell script
qui donne comme résultat l'index de tri et non le tableau trié.
La commande 'sort' n'a pas d'option pour ça.
Y-a-t-il une autre commande, rien trouvé dans man ?


essaye par là :
--
F. J.
danrob
Le #20151201
François Jacquemin



Problème résolu.
Merci pour le lien, je le garde au chaud.
Publicité
Poster une réponse
Anonyme