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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while read do echo ${REPLY} | tr -s ' ' '\n' | sort -n | tr -s '\n' ' ' done < ton_fichier
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager