(Courriels de diversion: <illicite@jalonneraient-mercuriales.com> <flippers@deroute-relayer.com> <degazant@repus-calibrent.com> <grossissent@irrite-urgences.com> <grâce@favoriserait-debarquerent.com> <colmatera@entr'aperceviez-encastrera.com> <libres@sillonnaient-cauteriseriez.com> <repererait@spoliateur-appele.com> <depaqueter@gendarme-assermenter.com> <sportivement@alcools-rebâtiras.com> )




Suite aux conseils de Vivien et Philippe, je me suis donc laisser tenter par le
awk (que j'avais peu utilisé jusque là) et les perfs sont extraordinaires à coté
de mon shell précédent:
En parallèle mon collègue n'avait toujours pas fini d'écrire le prog C et quand
je lui ai envoyé ma soluce 2, il était dégouté par la simplicité et la rapidité,
la voici donc :
=======================
FIC=test

cat ${FIC} | awk '
BEGIN { lg = 250 }
{
l = length
for(i=1 ; i <= l ; i+=lg)
  print substr($0, i, lg) ;
}
'
=======================

Merci a tous pour les conseils et fin du thread sur le sujet

PS : Philippe, cette nouvelle version :
- corrige le < en <= car dans le cas d'une ligne de 251 c, le 251nieme ne
sortait pas
- utilise la fonctionnalité $0 au lieu de $1

----------------------------------------------------------------------
Jean-François THAMIE
E-mail : jean-francois.thamie(at)cirso.fr

CIRSO Toulouse
Téléphone : 05-61-61-64-00, poste 385
----------------------------------------------------------------------



|--------+---------------------------------->
|        |          Midol-Monnet            |
|        |          <philippe.midol-monnet@I||        |          DEALX.com>              |
|        |                                  |
|        |          28/03/2001 15:06        |
|        |                                  |
|--------+---------------------------------->
  >----------------------------------------------------------------------------|
  |                                                                            |
  |       Pour :  Jean-François THAMIE/CER31/REC@CER31                         |  |       cc :                                                                 |
  |       Objet :      Re: [linux-31] Réf. : Re: [linux-31] La question   shell|
  |       de la semaine                                                        |
  >----------------------------------------------------------------------------|



"Jean-François THAMIE" wrote:
>
> Ma soluce :
> FIC=test
>
> cat ${FIC} | while read  LIGNE
> do
>   while [ ! "$LIGNE" = "" ]
>   do
>     echo $LIGNE | cut -c-250
>     LIGNE=`echo $LIGNE | cut -c251-`
>   done
> done
>
> Déjà, c'est lamentable en perf, alors en passant par awk !!!
> J'ai vais surement faire un prog C
>
>
Le prog C sera certainement le plus performant, mais je suis certain que
awk sera plus efficace que le code ci-dessus. En effet cut est lancé 2
fois a chaque itération, ce qui veut dire création de 2 process etc..
c'est pas bon pour les perfs ;-). Avec awk un seul process et
utilisation de fonctions built-in. Sed et Perl peuvent aussi résoudre le
probleme.

--
Philippe Midol-Monnet





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