(Courriels de diversion: <cordelieres@dissociables-tiede.com> <bricole@recusables-detenions.com> <croissent@coordonnatrice-completerais.com> <paraîtrions@refondues-chavirais.com> <assentiments@decryptages-stipulees.com> <illicite@jalonneraient-mercuriales.com> <flippers@deroute-relayer.com> <degazant@repus-calibrent.com> <grossissent@irrite-urgences.com> <grâce@favoriserait-debarquerent.com> )


"Jean-François THAMIE" wrote:
> 
> Salut à tous,
> j'ai un fichier contenant des enregistrements de longueur 4000
> je voudrais générer un autre fichier où chaque ligne de 4000 serait remplacée
> par le découpage de cette ligne en enregs de 250, soit 16 enregs de longueur 250
> J'ai une soluce avec des boucles mais question perf, c'est pas ca
> Je pensait a d'autres commandes comme pr mais je ne vois pas
> Si au passage quelqu'un a une idée
> Merci
>


Je me suis fabriqué -pour le meme probleme- un petit programme :
coupfile qui devrait faire ce que tu veux :

/* ======= coupfile.c : decoupe un fichier de caractères ======== */
/*                                                                */
/* découpe un flot de données (sans fin d'enregistrement)         */
/* en enregistrements de longueur fixe (suivant paramètre fourni) */
/*                                                                */
/* entrée et sortie standard					  */
/* on ajoute un separateur=0a en fin d'enregistrement		  */
/* si un séparateur est en place, on n'ajoute rien		  */
/* si un séparateur n'est pas en place il est effacé		  */
/* si lg demandée n'est pas un multiple de la lg du fichier,	  */
/*    le dernier enreg est incomplet				  */
				                                   						
/* EXEMPLES :							  */																
/* 1- decoupage du fichier ficinp suivant la lg xxx dans ficout	  */
/* coupfile6 -l xxx <ficinp >ficout                               */
													
/* 2- idem + remplacement de car 0 par car "-"			  */
/* coupfile6 -l 10 <finp | sed -e 's/0/-/g' >fout.2 		  */
/*								  */
/* 3- saisie clavier de car : obtenir des enreg de lg fixe	  */
/*    ATTENTION: fin saisie = CTRL-D				  */
/* coupfile6 -l 10 >fout					  */
/*								  */
/* obtenir les lignes entrées au clavier numérotées		  */
/* coupfile6 -l 10 | awk '{print ("ligne " NR " = " $0)}' >fout.2 */
/*                                                                */
/* ============================================================== */

donc, pour toi :

coupfile6 -l 250 <ficinp >ficout


Si ça marche, merci de me le dire ; si ça ne marche pas, merci de me le
dire (gentiment:-)




-- 
Cordialement,

J-F Bardou

coupfile6

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>