Bonjour,
j'ai un fichier constitué de lignes de la forme :
3 5 7 9 11 96 17 98 23 99 30 100
je voudrais pour chaque ligne, ordonner les valeurs.
Si vous avez des idées?
merci
Version imprimable
Bonjour,
j'ai un fichier constitué de lignes de la forme :
3 5 7 9 11 96 17 98 23 99 30 100
je voudrais pour chaque ligne, ordonner les valeurs.
Si vous avez des idées?
merci
Salut,
tu as été voir du côté de la commande sort?
Code:
1
2 man sort
Merci pour ta réponse
mais la commande sort tri les lignes entre elles. Ce que je veux faire c'est dans une meme ligne, faire le tri des valeurs
merci
Coucou,
Par tri tu entends quoi exactement?
J'avoue, ça fait un peu pouilleux mais ça fonctionne :aie:Code:cat ton_fichier | tr -s ' ' '\n' | sort -n | tr -s '\n' ' '
J'étais pas trés claire peut-être dans mon explication
voilà ce que je veux faire:
fichier en entrée (2 lignes)
1 4 5 9 8
7 3 4 6
Je veux obtenir les deux lignes mais chacune triée
1 4 5 8 9
3 4 6 7
merci
C'est la même chose ligne par ligne ;)
Code:
1
2
3
4 while read do echo ${REPLY} | tr -s ' ' '\n' | sort -n | tr -s '\n' ' ' done < ton_fichier
Bonjour,
La solution d'Alt_24 ne fonctionne pas correctement puisqu'elle ne donne qu'une seule et grande ligne en sortie. Il faut noter que la commande read utilise la variable $REPLY lorsqu'aucune variable n'est fournie.
Ici j'utilise explicitement la variable $line dans echo $line | tr..., donc $REPLY n'est pas utilisée.Code:
1
2
3
4while read line do echo $line | tr... done < ton_fichier
J'ai essayé en utilisant la commande awk, mais je ne suis pas arrivé à quelque chose de parfaitement élégant.
J'aurais aimé pouvoir accéder aux champs comme dans un tableau standard, FIELDS par exemple. Et dans ce cas, ce serait plus simple et plus rapide.Code:
1
2
3
4
5
6
7
8
9
10 awk ' { split($0, line) asort(line) for (i = 1; i <= NF; i++) { $i = line[i] } print }' ton_fichier
Je vais voir si on peut utiliser simplement Bash...Code:awk '{asort(FIELDS); print}' ton_fichier
Bon, sans utiliser gawk, je n'arrive pas à mieux que ce que proposé par al1_24 (en corrigeant le mini-bug).
Code:
1
2
3
4
5
6
7 #!/bin/bash rm -f fichier_out while read line do echo $line | tr -s ' ' '\n' | sort -n | tr '\n' ' ' >> fichier_out echo "" >> fichier_out done < fichier_in