Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
awk c'est magique
Envoyé par: distribution

Bonjour,

je commence à bien appréhender awk , et c'est géant . aussi pratique que les commandes shell pour manipuler les chaînes de caractères , mais largement plus rapide quand il s'agit de manipuler plusieurs milliers de lignes , sans parler des fonctions qui existent déjà .Exemple de bidouille : habituellement sur un fichier de 10000 à 20000 lignes je réalisais un tri par rapport à une colonne sous openoffice avant d'utiliser le fichier . Voilà qui m'arrive dans les pattes un fichier de plus de 100 000 lignes à utiliser pour alimenter d'autres fichiers , impossible d'utiliser openoffice pour trier car limité à environ 65000 (sans parler des problèmes vu que le fichier est issu d'une mdb access d'un logiciel avec un formatage qui dépasse mon entendement bref ) ....faut que je me paluche à la main une fonction de tri , panique à bord car je ne suis pas informaticien !
je cherche sur le net : premier truc sur lequel je tombe (wikipédia ) , le tri à bulle . je bidouille quelques lignes , fait des tests sur des petits fichiers , c'est long très long , m'enfin faut ce qu'il faut , je lance le script sur le fichier de plus de 100 000 lignes , environ 1 heures qu 'il calcul , et il en est tout juste à 20 % .
Je me dis pas possible de continuer comme ça , si je me plante c'est reparti pour des heures .
je fouille un peu plus sur wikipedia , je tombe sur le tri à fusion , parait il plus rapide que le tri à bulle . Je regarde ...oula mal de tête je ne sais pas comment programmer .
et là une idée de génie me vient ... je vais sur le site donner par Nbah et je tape dans cherche de firefox "sort" et je tombe sur ça : [www.gnu.org] la fonction asort que j'utilise de cette manière dans test6.sh



awk ' BEGIN { FS=";" }

{ ligne [ NR ] = $0
ref [ NR ] = $3
}
END{

fin=NR
print fin
for(i=2;i<=fin;i++){ ref2=ref
tableau[ref]=ligne }
asort(ref2,ref3)
for(i=1;i<=fin-1;i++){ ligne[i+1]=tableau[ref3] }
for(i=1;i<=NR;i++){ printf(ligne"\n") >> "parts2.txt" }
print "fini"

} ' parts.txt





le lance test6.sh , j'ai eu à peine le temps de dire ouf et c'était fini

awk c'est magique smiling smiley

Poste le Wednesday 11 March 2009 16:26:49
Répondre     Citer    
Re: awk c'est magique
Envoyé par: NBaH

aw(k|e)some !

Poste le Thursday 12 March 2009 00:14:07
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
awk c'est magique
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