Alors là respect.
pour moi je pense que c'est bon, j'attend maintenant que l'on me valide le résultat.
je suis parti sur le
sort -k1.20,1.21n -k1.33,2.2
oui, c'est 20 car la colonne 1 fait 19 caractères (j'ai bien appris la leçon [
lea-linux.org] )
donc voici le batch:
#! /bin/bash
#################################################
#
#################################################
REP_COURANT=${1-`pwd`}
export FICHIER=FICIN.EXP
# colonne1=19
# colonne2=2
# colonne3=5
# colonne4=6
# colonne5=6
# colonne6=9
# colonne7=15
# tri croissant sur colonne2 puis colonne5
sort -k1.20,1.21n -k1.33,2.2 $REP_COURANT/$FICHIER >$REP_COURANT/TRI1_$FICHIER
# tri croissant sur colonne2 puis colonne5 cumul
sort -k1.20,1.21n -k1.33,2.2 $REP_COURANT/$FICHIER | awk 'NR==1{ligne=$0;count=1}
NR>1{
if ($0 == ligne)
{count++}
else {
printf "%s%09d%s\n",substr(ligne,1,39),count,substr(ligne,48,62);
ligne=$0;count=1}
}
END {printf "%s%09d%s\n",substr(ligne,1,39),count,substr(ligne,48,62)}' >$REP_COURANT/TRI1_CUMUL_$FICHIER
Mon fichier de test a 4877 lignes
Mon fichier TRI1 a 4877 lignes
Mon fichier TRI1_CUMUL a 4792 lignes
temps d'exécution = inférieur à la seconde
Un grand merci
Poste le Friday 18 April 2008 11:30:51