Ce qui est assez coûteux, c'est le double accès sur les données :
1er par awk
2ème par "while read"
	
	awk -F"?" '{ print $1,$2,$3,$3,$4,$5,$6 }' $Nom | while read -r Bloc1 Col6 Col7 Coll8 Col9 Col10 Bloc2
 Solution tout en awk qui devrait être plus rapide  
 
http://www.shellunix.com/awk.html
http://lea-linux.org/cached/index/Dev-awk.html
http://pwet.fr/man/linux/commandes/posix/awk
Obs :  ${Col4} et ${Col5} utilisées et pas déclarées...  
 
	
	| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 
 |  
 
Nom1="fichier1.out"
Nom2="fichier2.out"
 
#Concatenation des 2 fichiers en entrée pour réaliser une boucle de traitement
Liste="${Nom1} ${Nom2}"
 
 
awk -F"?" -v AAAA=$(date +%H%S) -v script=$(basename $0) '
function writeCorps()
{
	#Structure du corps en sortie
	# A adapter !!!!!!!!!!
	print $1";"$4";"$5";"$2";" > NomFicSortie
}
BEGIN {
	IdPrec=""
	MPrec=""
	APrec=""
}
#------------------------------------------------------------#
#                      PROCEDURE PRINCIPALE                  #
#------------------------------------------------------------#
{
	if (FILENAME != FILEprec) {
		print ""
		TimeStamp="'$(date +%d/%m/%Y_%H:%M)'"
		print "Traitement de "FILENAME" Debut "TimeStamp
		print ""
		FILEprec=FILENAME
	}
	if ($1 == IdPrec && $2 == MBrec && $3 == APrec) {
		# Bloc1 Col6 Col7 Coll8 Col9 Col10 Bloc2
		writeCorps()
		next #-- on passe à l enregisrement suivant
	} 
	#
	### Changement de fichier de sortie
	#
	if ($1 == IdPrec) {
		Num=1
	} else {
		Num++
	}
	IdPrec=$1
	MPrec=$2
	APrec=$3
	NomFicSortie=$1""$2""$3"XXX.txt"
	TimeStamp="'$(date +%d/%m/%Y_%H:%M)'"
	print "XXX;YYYY"Num"AAAA;ZZZZ;"TimeStamp";"$4" 6:00-"$5" 6:00;BBBB;"$6";AAA;" > NomFicSortie
	writeCorps()
 
}
#------------------------------------------------------------#
#                  FIN PROCEDURE PRINCIPALE                  #
#------------------------------------------------------------#
END {
	print ""
	TimeStamp="'$(date +%d/%m/%Y_%H:%M)'"
	print "Execution "script" terminee at "TimeStamp" pour "NR" lignes"
	print ""
} ' $Liste
 
exit 0 | 
 
						
					
Partager