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

Shell et commandes GNU Discussion :

Sed avec caractère speciaux


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut Sed avec caractère speciaux
    Bonjour,

    j'ai un script à faire avec sed, et là je suis confronté à un petit problème à cause d'un caractère spécial, le < et >.

    Voici un ex de mon fichier (httpd.conf)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory /var/www/html>
    </Directory>
     
    <Directory />
    truc much
    </Directory>
    Voici ma ligne de code, j'ai testé pas mal de choses, mais je suis toujours confronté au même souci, si je ne mets pas en regexp "Directory />" il me rajoute mes lignes partout, alors que je voudrais qu'il ne m'ajoute mes lignes qu'à la suite du second directory:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "/Directory /c <Directory /> Options None AllowOverride None Order allow,deny" /tmp/toto
    Avec cela j'obtiens donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Directory /> Options None AllowOverride None Order allow,deny
    </Directory>
     
    <Directory /> Options None AllowOverride None Order allow,deny
    </Directory>
    Comment pourrais-je faire pour que sed prenne en compte mon < ou >, car là il cherche à l'interpréter, et même en rajoutant \ devant, cela ne change rien.

    D'avance merci pour votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    sed fait exactement ce que tu lui demandes là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "/Directory /c <Directory /> Options None AllowOverride None Order allow,deny" /tmp/toto
    Modifie toutes les lignes comportant "Directory " (avec l'espace) par le texte : "<Directory /> Options None AllowOverride None Order allow,deny"... ce qui fait correspondre aussi bien <Directory /> que <Directory /...>

    Si tu veux simplement ajouter "Options None AllowOverride None Order allow,deny" après <Directory />, il faut le lui dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/^<Directory \/>/aOptions None\nAllowOverride None\nOrder allow,deny' /tmp/toto
    /^<Directory \/>/ => cherche <Directory /> en début de ligne (c'est le / qu'il faut protéger, pas le >)
    en plus, utilise plutôt a pour ajouter une ligne, et les \n pour des sauts de ligne...

    Edit: correction, j'ai relu ton message

  3. #3
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    Mais lol,

    j'ai passé la journée dessus, et le sed me jetait systématiquement quand je lui mettait un >.
    Si je lui mettais un /c a la place, il me remplaçait partout ou il voyait le motif
    <Directory /*> (la c'est de ma faute, j'ai fait une erreur dans le résultat).

    Bon bref, merci beaucoup

Discussions similaires

  1. [MySQL] Where avec caractères speciaux
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2013, 22h07
  2. Réponses: 3
    Dernier message: 24/04/2009, 09h12
  3. Probléme avec les caractéres speciaux et encoding
    Par parou dans le forum Général Java
    Réponses: 8
    Dernier message: 29/01/2009, 12h47
  4. [AJAX] Caractères speciaux avec responseText
    Par aztec dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/10/2008, 18h50
  5. Probleme de lecture d'un fichier avec caractères speciaux
    Par bygui dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/06/2006, 09h35

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