Bonjour,
je suis fasse au probleme suivant, j’ai un petit fichier de 3Go en entree que je veux spliter celon certain critere. A chaque rupture, je veux changer le nom de mon fichier en sortie. J’ai essayes divers trucs, cherche sur le net, mais rien trouve. En dernier recours je poste ici en priant…
le script a la tete suivante :
[code]REP=‹ /backup/WONT_DELETE/ama/TEST ›
tata=tata.ama
awk ’
BEGIN {account=0A; i=0; newfile=0;}
/RELEVE/{
i=0;
newfile=1;
}
{if(newfile==1){i++; tab[i]=$0;}}
/ [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z] /{
if($4!=account){
account=$4;
printf("TAAAGGGG %s\n",account);
}
for(j=1;j<=i;j++) { print tab[j]; }
newfile=0;
}
{if(newfile==0){print $0;} }
’ $REP/toto >$REP/$tata
filename=tata.1
while read -r enreg
do
titi=$(echo $enreg|awk ‹ {print $1} ›)
if [[ « $titi » = « TAAAGGGG » ]] then
filename=tata.$(echo $enreg|awk ‹ {print $2} ›)
$filename
else
echo « $enreg » >>$filename
fi
done<$REP/$tata[/code]
En claire, j’aimerai integre ce que fait ma boucle while directement dans le awk (parceque un while read sur un fichier de 3 go… c’est « un peu » long), mais je n’arrive pas a changer le nom du fichier en sortie (meme en changeant $tata le awk conserve la valeur initial)
Aza.