Trier un fichier texte avec sort

Trier un fichier texte avec sort - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 29-05-2015 à 14:13:05    

Bonjour,
 
Je souhaite trier un petit fichier texte avec la commande sort, voici son contenu :
r;rue
av;avenue
bd;boulevard
imp;impasse
pl;place
qu;quai
res;residence
rpt;rondpoint
rted;routede
 
Mais le résultat du tri avec sort me donne ceci :
 
av;avenue
bd;boulevard
imp;impasse
pl;place
qu;quai
res;residence
rpt;rondpoint
r;rue
rted;routede
 
Je ne comprends pas pourquoi la ligne r;rue est située entre les lignes rpt;rondpoint et rted;routede !!!!!!  :heink:  
C'est vraiment incompréhensible.
 
Si quelqu'un a trouvé la solution, je suis preneur !

Reply

Marsh Posté le 29-05-2015 à 14:13:05   

Reply

Marsh Posté le 29-05-2015 à 15:02:24    

salut,
 
j'ai l'intuition que le point-virgule n'est pas tout à fait pris en compte.
 
pour obtenir le résultat souhaité, il faut indiquer le séparateur de champs, et le(s) champ(s) sur le(s)quel(s) effectuer le tri.

Reply

Marsh Posté le 29-05-2015 à 15:08:39    

effectivement, le ; n'a pas l'air d'être pris en compte !
Mais j'ai essayé les commandes suivantes :
sort -t";"
sort -t";" -k1
sort -k1
 
et le résultat est le même !!!!
 
Si quelqu'un arrive à me trouver la commande sort qui marche, je l'applaudis !
 
En attendant j'ai contourné le problème en utilisant awk :


awk -F";" '
 {
   T[NR] = $0
 }
 END {
  asort(T)
  for (i = 1; i<=NR; i++)
   print T[i]
 } ' fichier_a_trier


Au moins avec awk ça marche !


Message édité par jcop le 29-05-2015 à 15:12:28
Reply

Marsh Posté le 29-05-2015 à 16:02:40    

Code :
  1. sort -t ';' -k1,1

sinon le tri est effectué à partir champ #1.
il faut dire à sort de trier d'abord le champs #1, puis, s'il y a lieu, préciser les autres clés de tri.

Reply

Marsh Posté le 29-05-2015 à 16:39:03    

ok merci, ça marche ! :jap: :)
Linux c'est vraiment parfois space...
Avec la commande asort sous awk, pas besoin de toute cette subtilité !


Message édité par jcop le 29-05-2015 à 18:59:32
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed