Re: [#!/fr] Tri de fichiers lourds

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Simpsonus
Date:  
À: La liste francophone des scripts shell
Sujet: Re: [#!/fr] Tri de fichiers lourds
En fait tu peux modifier un peut le script comme cela :

*#!/usr/bin/awk -F; -f
BEGIN { while ((getline < ficb) > 0)
                fic2[$1]=$2}
{if (fic2[$1])
        printf "%s%s%s\n",$1,FS,fic2[$1]
else
        print $0}*


et si tu nommes le script *compar2fic.awk*, la méthode de lancement que tu
peux mettre dans un .sh si tu le souhaites devient :

*compar2fic.awk -v ficb="/chemin/fichier_b" "/chemin/fichier_a" >
"/chemin/fichier_c*"

En guise d'explication, si on lance awk avec le parametre -v ce qui suis est
considéré comme une assignation de variable donc on lui dit que la variable
ficb contient le chemin qui nous intéresse pour le fichier b (pour plusieurs
assignation il faut autant de -v var=valeur) ensuite le chemin pour le
fichier a pour lui dire que le fichier sur lequel porte le traitement est ce
fichier là (c'est le comportement normal de awk qui lit séquentiellement un
fichier et le découpe en champs $1, $2, $3, ... $n selon un séparateur ici
le ; situé après le -F dans l'entête) et pour finir bien sur, la redirection
de la sortie standard vers le fichier c

A la lecture de vos tests chronométrés, je me rends compte que je n'avais
pas tort en parlant d'efficacité quand j'ai publié ce petit script ;-)) mais
je m'y attendait car awk est terrible d'efficacité pour ce genre de
traitements, je rigole bien quand je vois certaines macros vba excel bien
tordues qui peuvent se remplacer par quelques lignes de awk.).


>
>
>
>
> _______________________________________________
> archives :
> http://listes.patpro.net/list/sshfr.fr.html
> http://listes.patpro.net/mailman/listinfo/script_shell_fr
>

_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr