Re: sh (sed)

Page principale

Répondre à ce message
Auteur: Pierre Mazein
Date:  
À: guilde
Sujet: Re: sh (sed)
Bonsoir,

sed peut fonctionner avec des adresses, soit numériques (ligne, ou
décallage par rapport à la balise de début), soit des regex

Grossomodo cela ressemble à

sed "/balisededebut/,/balisedefin/ s/^/debutdeligne/p"

On peut combiner balise regex et numéro de ligne

$cat tst
un
deux
trois
quatre
cinq
six

$ sed "/deux/,/cinq/ s/^/debut_/" tst
un
debut_deux
debut_trois
debut_quatre
debut_cinq
six

$ sed "/deux/,+2 s/^/debut_/" tst
un
debut_deux
debut_trois
debut_quatre
cinq
six

$ sed "/deux/,+4 s/^/debut_/" tst
un
debut_deux
debut_trois
debut_quatre
debut_cinq
debut_six

$ sed "/deux/,4 s/^/debut_/" tst
un
debut_deux
debut_trois
debut_quatre
cinq
six

Notez bien les nuances, et le fait que les balises de limites soient
traitées.

Pierre


Le 07/03/2017 à 18:59, Patrick Dupre a écrit :
> Bonsoir,
>
> J'ai besoin d'un peu d'aide !
> J'ai un fichier que je voudrais transformer.
> C'est assez simple, mais je n'ai pas la solution.
> Voila,
> Je veux ajouter un nouveau caractere en debut de ligne jusqu'a une
> certaine ligne (comprise) que je sais identifier.
> Cela doit etre possible avec un sed ou je "substitue" le premier
> caractere (^.) par un autre caracter et lui-meme.
> sed -ne "s/^./\#&/p"
>
> Mais comment stopper la subsitution ?
>
> Est-ce que sed peut travailler en entree sortie, cad editer le ficher
> lu ?
>
> Merci.
>
> ===========================================================================
>   Patrick DUPRÉ                                 | | email: pdupre@???
>   Laboratoire de Physico-Chimie de l'Atmosphère | |
>   Université du Littoral-Côte d'Opale           | |
>   Tel.  (33)-(0)3 28 23 76 12                   | | Fax: 03 28 65 82 44
>   189A, avenue Maurice Schumann                 | | 59140 Dunkerque, France
> ===========================================================================

>