Re: [HS grave] Re: script pour compter 840 caractères et insérer un caractère de continuation de
Le Thu, 21 May 2009 00:48:16 +0200
Fanfan <francois@cerbelle.net> a écrit:
> Le Wednesday 20 May 2009 à 19:22:00 (+0200), Gilles MISSONNIER a écrit :
> > le pb :
> > comment insérer un caractère "retour à la ligne" quand on a les 2
> > conditions :
> > 1- on a dépassé 70 caractères d'affilé ("blanc ou pas")
> > 2- on continue jusqu'à ce que l'on recontre un "blanc"
> > (on peut considérer que le blanc rencontré devra être supprimé)
> >
> > aucune des solutions suggérées ne fonctionne :
> > par exemple, j'ai un fichier de 2 lignes de 200 caractères chacunes,
> > je voudrais idéalement si les longueurs des mots le permettent :
> > 70
> > 70
> > 60
> > 70
> > 70
> > 60
> >
> >
> > et non pas
> > 70
> > 130
> > 70
> > 130
>
> D'après ton énoncé, les seules lignes en sortie qui feront moins de 70
> caracteres faisaient déjà moins de 70 caractères en entrée. Toutes les
> autres feront obligatoirement 70 caractères minimum plus éventuellement
> un mot (dont la longueur est indéfinie). Ce n'est donc pas cohérent avec
> les exemples que tu donnes. Je crois que nos deux solutions respectent
> ton énoncé. Mais ton énoncé respecte-t-il ce que tu souhaites ?
>
> [ fcerbell@aspire ShLvl:1 Cmd:505 Ret:0 jeu mai 21 00:30:11 ]
> ~ $ echo "azehjg akjhzrg aekrhg ezrkhgz erzrkjhgzer zekrgezr kezrezk
> zerkzer zkerz rzekr z" | wc
> 1 11 81
> [ fcerbell@aspire ShLvl:1 Cmd:505 Ret:0 jeu mai 21 00:30:15 ]
> ~ $ echo "azehjg akjhzrg aekrhg ezrkhgz erzrkjhgzer zekrgezr kezrezk zerkzer
> zkerz rzekr z" | sed 's/\(.\{70,70\}[^ ]*\) \(.\+\)$/\1\n\2/' azehjg akjhzrg
> aekrhg ezrkhgz erzrkjhgzer zekrgezr kezrezk zerkzer zkerz rzekr z
>
> Les conditions de césure sont bien 1 ET 2, pas 1 OU 2 ?
> En gros, ton énoncé dit que tu coupes la ligne au premier espace
> rencontré au dela du 70ème caractère.
>
> Le cas qui se pose peut etre est si ce comportement doit etre recursif.
> C'est certainement là que nos lignes ne te conviennent pas. Il me
> semblait que le modificateur 'g' aurait du faire l'affaire, mais je
> viens de tester et ca ne marche apparemment pas. Un autre sur la liste
> aura certainement le detail qui nous manque.
sed -i -e '1,$s/\(.\{70\}[^ ]*\) /\1XXX\n/g' fichier
fait ce que tu veux en insérant XXX à la fin de la ligne.
jksdddf fsddddddddddddddddd fsddddddddddddddddddddd fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssss dffffffffff dfdfd df jksdddf fsddddddddddddddddd fsddddddddddddddddddddd fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssss dffffffffff dfdfd df jksdddf fsddddddddddddddddd fsddddddddddddddddddddd fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssss dffffffffff dfdfd df
sdfsdf
fsd
sdfdsfds sdf jdddddddddddd dddddddddddd dddddddddddddd dddddddddddddd dddddddddddddddddddd ddddddddd dddddddddddd ddddddddd
est transformé en
jksdddf fsddddddddddddddddd fsddddddddddddddddddddd fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssssXXX
dffffffffff dfdfd df jksdddf fsddddddddddddddddd fsdddddddddddddddddddddXXX
fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssss dffffffffffXXX
dfdfd df jksdddf fsddddddddddddddddd fsddddddddddddddddddddd fsddddddddddddddddxxxddddfdsssssssssssssssssssssssssssssssssssssXXX
dffffffffff dfdfd df
sdfsdf
fsd
sdfdsfds sdf jdddddddddddd dddddddddddd dddddddddddddd dddddddddddddd dddddddddddXXX
ddddddddd ddddddddd dddddddddddd ddddddddd
François Boisson
>
> Fanfan
>
> --
> Pour se marier, il faut un témoin, comme pour un accident ou un duel.
> [ Sacha Guitry ]
>
Reply to: