IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Utilisatation de sed


Sujet :

Linux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Points : 206
    Points
    206
    Par défaut Utilisatation de sed
    Bonjour,

    Je souhaiterais utiliser sed afin de rajouter une ligne dans un fichier

    Je voudrais remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Location /manager/>
            Order deny,allow
            Deny from all
            Allow from 194.168.1.4
    </Location>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Location /manager/>
            Order deny,allow
            Deny from all
            Allow from 194.168.1.5
            Allow from 194.168.1.4
    </Location>
    Quelqu'un aurait-il une idée ?

    Merci.
    Nulla dies sin linea

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    la commande que tu cherches dans sed est append ou insert
    selon que tu veuilles la ligne insérée avant ou après le pattern recherché

    i\ et a\ donc et bien sur si tu utilises des doubles quotes comme dans l'exemple ci dessous il faut protéger le "\" par un second !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ sed "/Allow/ i\\      
    >     Allow from 192.168.1.5
    > " t                   
    <Location /manager/>
            Order deny,allow
            Deny from all
            Allow from 192.168.1.5
            Allow from 194.168.1.4
    </Location>
    $ rm t

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    ou insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/Allow/i\
            Allow from 000.000.000.000' ton_fichier
    ==
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/Deny/a\
            Allow from 000.000.000.000' le_fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ou insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/Allow/i\
            Allow from 000.000.000.000' ton_fichier
    ==
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/Deny/a\
            Allow from 000.000.000.000' le_fichier
    Merci pour vos contributions.
    Cette solution fonctionne cependant j'ai plusieurs balise location et je voudrais ajouter ma ligne seulement dans la section <Location /manager>.

    J'ai essayé de faire celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     sed '/<Location \/manager\/>\n        Order/i\
            Allow from 000.000.000.000' ec-ax-t1.canal-plus.com
    Sachant qu'il y a un saut de ligne et 8 espaces entre manager> et Order.
    Mais je n'obtiens aucun résultat...
    Nulla dies sin linea

  5. #5
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    rien n’empêche :
    suffit de préciser le paragraphe dans lequel tu veux faire la modif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $ cat > t
    titi
    tata
    tutu
    toto      
    titi2
    tata
    tutu
    toto2
     
    $ sed "/titi2/,/toto2/ { /tutu/ i\\                                                                           
    > les trois nains vont a la mines, le troisieme prend la pioche, le second la lenterne que prend le premier \?
    > } " t
    titi
    tata
    tutu
    toto
    titi2
    tata
    les trois nains vont a la mines, le troisieme prend la pioche, le second la lenterne que prend le premier ?
    tutu
    toto2
    $ rm t

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sed command pour des pathname ?
    Par fidififouille dans le forum Linux
    Réponses: 10
    Dernier message: 23/12/2010, 12h28
  2. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  3. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34
  4. Makefile et sed
    Par pitistef dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 10/02/2004, 15h06
  5. [langage] awk et sed dans script perl
    Par scoti dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2003, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo