Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
probleme avec la fonction sort
Envoyé par: distribution

Bonjour ,

je viens de remarquer que la fonction sort ne prend pa en compte le caractère suivant "-" (tiré du 6 ) lorsqu'il trie .


si j'ai
a="18"
b="1-A"

il va considérer que b est plus grand que a (c'est à dire qu'il ignore le caractère "-" ) alors que normalement b est plus petit que a .


y a t il une option pour la fonction sort pour qu'elle puisse prendre en compte le caractere "-" ?

Merci

Poste le Sunday 7 June 2009 17:37:04
Répondre     Citer    
Re: probleme avec la fonction sort
Envoyé par: distribution

Je précise la question . y a t il une option pour que sort trie selon l'ordre ascii ?

Poste le Sunday 7 June 2009 17:53:16
Répondre     Citer    
Re: problème avec la fonction sort
Envoyé par: nicola

Pas selon sa page de manuel. Tu peux toujours proposer un souhait au développeur.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Sunday 7 June 2009 18:35:39
Répondre     Citer    
Re: problème avec la fonction sort
Envoyé par: distribution

ayé problème resoluto( mode manchot madagascar 2 ) en passant par awk et la fonction asort .J'avais déjà utiliser asort mais comme j'ai besoin de trier des lignes par rapport à un champ je ne savais pas comment faire pour garder la correspondance entre le trie sur un champ et la ligne (voir ici [www.gnu.org] pour comprendre le problème auquel on est confronté avec asort) .

donc la solution est toute simple en fait . On concatène le champ sur le lequel on trie , avec une chaine de caractère de plusieurs dizaines d'espaces blancs puis la ligne derrière . J'utilise asort sur ces lignes bidouillées . puis à la fin j'extraits les lignes qui sont triées selon le champ .

Voici le code


   
a=$1
b=$2

echo $a
echo $b


awk -v fichier=$a -v colonne=$b '  BEGIN {  FS=";"  
                                            chemin=gensub("^(.*)\\.(.*)$","\\1""a.""\\2",1,fichier)  
                                            print " debut mémorisation "  
                                            j=colonne
                                          } 
   {   if(index($j,"\"") == 1){ champ=gensub("^\"(.*)\"$","\\1",1,$j) }
       else{champ=$j}
       tab[NR]=champ"                              "$0
       lg=NR 
   }
    END { print "fin mémorisation" 
          print "début trie " 
          asort(tab)
          for(i=1;i<=lg;i++){  
                ligne=gensub("^(.*)                              (.*)$","\\2",1,tab)  
                printf(ligne"\n") >> chemin    
                              }
          print "fin trie" 
      }  ' $a

        

Poste le Thursday 11 June 2009 10:57:18
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
probleme avec la fonction sort
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons