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 :

ksh : sed, remplacer un élément de valeur inconnue


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Par défaut ksh : sed, remplacer un élément de valeur inconnue
    Bonjour,
    J'ai un fichier toto.dat dont une ligne est la suivante :
    A= valeur1 #blabla
    où valeur1 est un entier inconnu (disons que je souhaite que le sed marche qq soit valeur1).
    Je souhaiterais remplacer valeur1 par valeur2 qui est contenue dans la variable var2 (en respectant les espaces).
    J'ai essayé sed -e "/A= */A= $var2/" mais ça remplace la ligne par :
    A= valeur1valeur2 #blabla
    Merci beaucoup d'avance si quelqu'un peut me donner la solution !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 84
    Par défaut
    Solution: on peut utiliser les parenthèses pour délimiter une partie du texte, comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier | sed "s|A=\(.*\)#|A=$a#|g"
    Telle quelle était écrite, votre commande correspondait à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier | sed "s|A=\(.*\)#|A=$a\1#|g"
    (on peut délimiter une ou plusieurs parties de texte et les référencer avec \1, \2,..)

    Limitation de la solution: il faut pas que "blabla.." contient "#", sinon ç'est le dernier "#" qui est considéré!

  3. #3
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Autre possibilité
    http://www.shellunix.com/regexp.html


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    valeur2="TOTO"
     
    echo "* liste.txt : "
    cat liste.txt
    echo -e "\n* Résultat : "
    sed "s/A= [^#]*/A= $valeur2 /" liste.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    * liste.txt : 
    A= valeur1 # blabla 
    A= 123 # blabla 
    A= 1.400 # blablabla
    A= 1.3 # blabla, # blabla2
     
    * Résultat : 
    A= TOTO # blabla 
    A= TOTO # blabla 
    A= TOTO # blablabla
    A= TOTO # blabla, # blabla2

Discussions similaires

  1. SED Remplacement du caractère . 'point'
    Par Fluxy dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 04/06/2007, 14h37
  2. Réponses: 1
    Dernier message: 08/09/2006, 16h43
  3. Réponses: 5
    Dernier message: 14/06/2006, 16h35
  4. [Debutant]Remplacer une liste de valeur par une liste de val
    Par Sebbo dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/03/2006, 12h15
  5. Compter nombre d'éléments avec valeur X dans un formulaire
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2005, 15h49

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