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] [REGEX] : caractères interprétables


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut [SED] [REGEX] : caractères interprétables
    Bonjour,

    J'utilise la commande SED avec une regex pour faire un "rechercher/remplacer"

    Cependant, j'ai un petit problème. En effet, quand la chaine de remplacement contient des caractères interprétables, SED m'indique une erreur.

    Exemple : j'ai la chaine de remplacement suivante suivante : qa/vVedFfydg avec la caractère "/" qui est interprété.

    sed '/^root/s/\([^:]*\):[^:]*:\(.*\)/\1:qa/vVedFfydg:\2/' ./UNIX/Redhat/etc/shadow
    sed: -e expression n°1, caractère 39: option inconnue pour `s'
    J'ai essayé d'entourer la chaine avec des '...', `...` ou des "..." et j'ai toujours le problème.

    Dans ce cas, comment faire pour ne pas avoir ce problème ?

    Merci d'avance,

    Arnaud

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Soit tu escape le / :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo toto/titi | sed 's/o\/t//'
    Soit tu utilises un autre caractère que / pour ton s/// :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo toto/titi | sed 's#o/t##'

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Citation Envoyé par matafan Voir le message
    Soit tu escape le / :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo toto/titi | sed 's/o\/t//'
    Soit tu utilises un autre caractère que / pour ton s/// :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo toto/titi | sed 's#o/t##'
    Oui, mais j'ai oublier de le dire, la chaine "qa/vVedFfydg" est aléatoire. (C'est le résultat d'un mot de passe crypté)

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Il y a probablement certains caractères qui ne sont pas valides dans un mot de passe chiffré. Utilise un de ses caractères comme séparateur dans ta substitution, et tu es sûr que ça marchera à tous les coups. Il n'y a pas d'autre solution avec sed.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    ok et les caractère de séparation autorisé dans sed sont ?

    j'ai essayé avec un # pour mon exemple.

    J'ai pas l'erreur, mais il ne se passe rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '#^root#s#\([^:]*\):[^:]*:\(.*\)#\1:qa/vVedFfydg:\2#' ./UNIX/Redhat/etc/shadow

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Tu ne peux choisir le caractère que dans la commande s///, pas pour //. Tu dois garder /^root/

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

Discussions similaires

  1. REGEX, caractères génériques
    Par Djakisback dans le forum Word
    Réponses: 9
    Dernier message: 23/01/2015, 17h40
  2. [PEAR][HTML_QuickForm][2] Rule regex caractères accentués
    Par bugs74 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/09/2010, 13h41
  3. ksh sed et caractères spéciaux
    Par floanne dans le forum Linux
    Réponses: 6
    Dernier message: 23/06/2009, 13h43
  4. Réponses: 4
    Dernier message: 28/04/2009, 12h38
  5. Réponses: 1
    Dernier message: 10/06/2008, 15h30

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