[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS grave] Re: script pour compter 840 caractères et insérer un caractère de continuation de



Fanfan a écrit, jeudi 21 mai 2009, à 00:48 :
[...]
> 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.

| François :
| sed -e '1,$s/\(^.\{70\}[^ ]*\) /\1\n/g' fichier

Cette option « g » est inutile, à cause de l'ancrage initial « ^ » ...

| Fanfan :
| sed 's/\(.\{70,70\}[^ ]*\) \(.\+\)$/\1\n\2/' fichier

...  et celle-ci à cause de l'ancrage final « $ » (et/ou de l'avidité du
\+). L'option « g » répète le traitement de chaînes /distinctes/ :

~ $ echo 12345678 123456789 abc| sed 's/\(.\{7\}[^ ]*\) /\1\n/g'
12345678
123456789
abc

mais si la regexp doit mordre le mot suivant, on peut faire une boucle

~ $ echo "1234567 12345678 123456789  " | \
 sed -re ':A;s/([^\n]{7}[^ \n]*) ([^ \n])/\1\n\2/;tA'
1234567
12345678
123456789  

# label :
:A
# substitution :
s/([^\n]{7}[^ \n]*) ([^ \n])/\1\n\2/
# et tant qu'elle réussit, retour à A :
tA


-- 
Jacques L'helgoualc'h


Reply to: