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 :

probleme remplacement chaine de caractere avec SED


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut probleme remplacement chaine de caractere avec SED
    bonjour a tous.
    en fesant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fichier test:
    #!/bin/sh
     
    sed s/LEPSEUDO/$1/g gnagna
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fichier gnagna:
    INSERT INTO `dc_user` ( `user_id` , `user_level` , `user_pwd` , `user_nom` , `u$
    VALUES (
    'LEPSEUDO', '9', MD5( 'LEMPD' ) , 'LENOM', 'LEPRENOM', '', '', 'wiki', '10', '1$
    );
    et en lancant via ./test LEMOTDEPASSCHANGER
    sa me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    root@jenyfer:/tmp/test# ./test LEMOTDEPASSCHANGER
    INSERT INTO `dc_user` ( `user_id` , `user_level` , `user_pwd` , `user_nom` , `user_prenom` , `user_pseudo` , `user_email` , `user_post_format` , `user_edit_size` , `user_pref_cat` , `user_lang` , `user_delta` , `user_post_pub` )
    VALUES (
    'LEMOTDEPASSCHANGER', '9', MD5( 'LEMPD' ) , 'LENOM', 'LEPRENOM', '', '', 'wiki', '10', '1', 'fr', '0', '1'
    );
    et en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     vi -c "%s:LEPSEUDO:$1:|:wq" fichier
    sa marche, hors je prefererais via sed qui n'ouvre pas de prog contrairement a vi qui s'ouvre puis se ferme

    si quelqun a une petite idée, sa m'aiderais pour finir mon script
    Merchi d'avance.

  2. #2
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Désolé mais je n'ai rien compris !

    Rq: fesant<-faisant,
    sa<-ça, (x2)
    hors<-or,
    m'aiderais<-m'aiderait,

    Je crois que j'ai compris, essaye avec sed -i, mais j'ai lutté.
    Pour les autres (si ce n'est pas sed -i), il souhaite que le fichier (gnagna) soit modifié directement, et non que la modification soit affichée sur STDOUT, enfin je crois, parce que je ne trouve pas le sens de :
    sed qui n'ouvre pas de prog contrairement

  3. #3
    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
    Citation Envoyé par rhaamo
    bonjour a tous.
    en fesant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fichier test:
    #!/bin/sh
     
    sed s/LEPSEUDO/$1/g gnagna
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fichier gnagna:
    INSERT INTO `dc_user` ( `user_id` , `user_level` , `user_pwd` , `user_nom` , `u$
    VALUES (
    'LEPSEUDO', '9', MD5( 'LEMPD' ) , 'LENOM', 'LEPRENOM', '', '', 'wiki', '10', '1$
    );
    et en lancant via ./test LEMOTDEPASSCHANGER
    sa me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    root@jenyfer:/tmp/test# ./test LEMOTDEPASSCHANGER
    INSERT INTO `dc_user` ( `user_id` , `user_level` , `user_pwd` , `user_nom` , `user_prenom` , `user_pseudo` , `user_email` , `user_post_format` , `user_edit_size` , `user_pref_cat` , `user_lang` , `user_delta` , `user_post_pub` )
    VALUES (
    'LEMOTDEPASSCHANGER', '9', MD5( 'LEMPD' ) , 'LENOM', 'LEPRENOM', '', '', 'wiki', '10', '1', 'fr', '0', '1'
    );
    et en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     vi -c "%s:LEPSEUDO:$1:|:wq" fichier
    sa marche, hors je prefererais via sed qui n'ouvre pas de prog contrairement a vi qui s'ouvre puis se ferme

    si quelqun a une petite idée, sa m'aiderais pour finir mon script
    Merchi d'avance.

    la plupart du temps sed appelles vi donc ....

    la solution consistes à re-diriger l'affichage durant l'opération ce qui rend la manipulation transparente sur tous les systèmes y compris ceux qui "ouvrent" vi.
    penses aussi au cas des systèmes où vi renvoie sur STDERR "Not openning vi in a terminal" et messages équivalents.

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    sed -i fichier -e s/CHAINE/$1/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    salut.
    merci des reponses.
    enfin je crois, parce que je ne trouve pas le sens de :
    Citation:
    sed qui n'ouvre pas de prog contrairement
    ben quand je fait avec vi il s'ouvre puis se ferme, et avec sed rien ne s'ouvre/ferme immediatement ...

    je test des que je peut sed -i fichier -e s/CHAINE/$1/
    et voir si c bon :/

Discussions similaires

  1. [XSLT] Remplacement d'une chaine de caracteres avec XSL
    Par HyoGz dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 24/01/2008, 09h15
  2. remplacer une chaine de caractères avec sed
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/05/2007, 14h56
  3. Réponses: 2
    Dernier message: 05/12/2005, 13h05
  4. chaine de caractere avec virgule dans Insert
    Par Sylvain245 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/11/2005, 12h56
  5. Réponses: 9
    Dernier message: 28/10/2005, 11h43

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