Re: script pour compter 840 caractères et insérer un caractèr e de continuation de ligne

2009-05-19 Par sujet Jacques L'helgoualc'h
Fanfan a écrit, mardi 19 mai 2009, à 13:25 :
> Le Tuesday 19 May 2009 à 11:51:52 (+0200), Jacques L'helgoualc'h a écrit :
> > > 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" 
> > 
> >  sed -re 's/.{42,70}[[:blank:]]/&\\\n/g'
> 
> Tu fais ta césure avant le 70 eme caractère, ce qui ne correspond pas à
> la condition 1.

Oui, je réponds un peu à côté : je suppose qu'on veut

 - limiter à 70 caractères (ou 71, blanc compris (les cartes perforées, c'était 
72
   + 8 colonnes de numérotage :)) ;

 - en coupant de préférence sur les blancs...

> Il me semblait que le quantificateur {} était avide et allait avaler
> tous les caractères jusqu'à 70, même si on trouve un blanc entre 42 et
> 70. Me gourre-je ?

Un peu, il reculera au dernier blanc dans la fourchette :

~ $ echo 012345678901234567890123456789012345678942 \
0123456789012345678901234567890123456789 | \
 sed -re 's/.{42,70}[[:blank:]]/&\\\n/g'
012345678901234567890123456789012345678942 \
0123456789012345678901234567890123456789

> > va avoir une certaine élasticité ; pour ne pas te casser la tête avec un
> > unique script  sed compliqué, tu peux  piper dans un  second rigide pour
> > casser les lignes trop longues que laisse passer le premier :
> >  sed -re 's/.{42,70}[[:blank:]]/&\\\n/g' | \
> >  sed -re 's/.{70}/&\\\n/g'
> 
> En fait, la, tu vas couper à 70, même au milieu d'un mot. 

Comme dans la demande initiale.

> Au final, toutes tes lignes feront moins de 71 caractères, avec une césure en
> plein mot. Non ?

Oui, si besoin.
-- 
Jacques L'helgoualc'h

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org



Re: script pour compter 840 caractères et insérer un caractèr e de continuation de ligne

2009-05-19 Par sujet Fanfan
Le Tuesday 19 May 2009 à 11:51:52 (+0200), Jacques L'helgoualc'h a écrit :
> > 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" 
> 
>  sed -re 's/.{42,70}[[:blank:]]/&\\\n/g'

Tu fais ta césure avant le 70 eme caractère, ce qui ne correspond pas à
la condition 1.

Il me semblait que le quantificateur {} était avide et allait avaler
tous les caractères jusqu'à 70, même si on trouve un blanc entre 42 et
70. Me gourre-je ?

> va avoir une certaine élasticité ; pour ne pas te casser la tête avec un
> unique script  sed compliqué, tu peux  piper dans un  second rigide pour
> casser les lignes trop longues que laisse passer le premier :
>  sed -re 's/.{42,70}[[:blank:]]/&\\\n/g' | \
>  sed -re 's/.{70}/&\\\n/g'

En fait, la, tu vas couper à 70, même au milieu d'un mot. Au final,
toutes tes lignes feront moins de 71 caractères, avec une césure en
plein mot. Non ?

Fanfan

-- 
Après tout, il faut avoir une jeunesse. L'âge où l'on se décide à être
jeune importe peu...  
   [Henri Duvernois]


signature.asc
Description: Digital signature


Re: script pour compter 840 caractères et insérer un caractèr e de continuation de ligne

2009-05-19 Par sujet Jacques L'helgoualc'h
Gilles MISSONNIER a écrit, mardi 19 mai 2009, à 10:54 :
> raffinons ! raffinons ! :
> 
> aux experts de sed | awk | perl | sh : (Jacques ?)

Sh, bof --- tu /peux/ le faire...

> 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" 

 sed -re 's/.{42,70}[[:blank:]]/&\\\n/g'

va avoir une certaine élasticité ; pour ne pas te casser la tête avec un
unique script  sed compliqué, tu peux  piper dans un  second rigide pour
casser les lignes trop longues que laisse passer le premier :

 sed -re 's/.{42,70}[[:blank:]]/&\\\n/g' | \
 sed -re 's/.{70}/&\\\n/g'


P.S. Je lis la liste, inutile de me mettre en Cc:.
-- 
Jacques L'helgoualc'h

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org



Re: script pour compter 840 caractères et insérer un caractèr e de continuation de ligne

2009-05-17 Par sujet Jacques L'helgoualc'h
patrick heraud a écrit, dimanche 17 mai 2009, à 19:32 :
> bonjour,

bonsoir (ou bisouii),

> je cherche à insérer un caractère '\' dans une chaîne composée de
> caractères alphanumériques et de '.'
> Cette insertion doit se situer avant le 850 ème caractère et être suivie
> d'un saut de ligne.
> Pour ceux qui connaissent, c'est pour transformer des règles SNORT au
> format 2.7 en règles au format 2.3 (qui limite le nombre de caractères
> d'une ligne à 850 maxi).
> Je pense qu'un script avec awk ou sed peut faire ça:
> - quelqu'un peut-il m'aider?

Info sed (GNU) t'aidera,

~ $ echo 123456789abcdefghij | sed -re 's/.{6}/&\\\n/g'
123456\
789abc\
defghi\
j

mais on peut raffiner un peu la position des césures si besoin.

> Merci.

de rien,
-- 
Jacques L'helgoualc'h

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org