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 :

sed: remplacer une ligne qui commence par Version


Sujet :

Linux

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut sed: remplacer une ligne qui commence par Version
    Bonjour,

    je souhaiterai utiliser sed pour remplacer une ligne dans mon fichier qui est:
    Version: TAG_01 en Version: TAG_02.
    j'ai essayé les commandes suivantes sans succés:
    sed '/^Version/Version: TAG_02/' fichier.txt
    et '/Version*/Version:TAG_02/' fichier.txt, j'ai eu à chaque fois la même erreur:
    sed: -e expression n°1, caractère 11: Commande inconnue: `V'

    Merci pour votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    En fait, tu oublies d'utiliser le s/recherche/remplacement/

    Le code suivante, remplace la ligne typée : Version: TAG_XX en Version: TAG_02

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Version: TAG_01' | sed 's/^Version: TAG_[0-9][0-9]/Version: TAG_02/'

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Je te remercie pour ta réponse par contre mon souci c'est que mon tag peut être du style AA_BB_TAG_0125 (grosso modo je ne sais jamais comment il s'appelle), c'est pourquoi j'aurai besoin de simplement lui indiquer que ma chaine commence par "Version:" et de remplacer la chaine entièrement. Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Si je comprends bien ton fichier peut avoir les occurences suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Version: AA_BB_TAG_0125
    Version: TAG_02
    Version: AA_BB_TAG_01
    ?

    Et toutes ses occurences, tu veux les remettres dans un format "normalisée" type

    Version: AA_BB_TAG_0125 en Version: TAG_0125 ?

    où bien

    Version: AA_BB_TAG_0125 en Version: TAG_02 ?

    Pour le premier type:
    (Récupération de l'id TAG avec possibilité de texte avant le "TAG"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Version: TAG_01' | sed '/^Version/ s/[a-zA-Z_]*TAG_\([0-9]*\)/TAG_\1/'
    Pour la second type :
    (Remplacement direct du texte AA_BB_TAG_ID par TAG_02)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Version: TAG_01' | sed '/^Version/ s/[a-zA-Z_]*TAG_[0-9]*/TAG_02/'

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Exact, j'ai réussi en faisant cette ligne:
    sed 's/^Version.*/Version: BR_AA_BB_TAG01/g' essai.txt > essai2.txt

    ce que j'aimerai faire maintenant c'est d'en faire une variable:
    DIR=BR_AA_BB_TAG01
    et d'utiliser DIR dans la commande sed, mais $DIR ne marche pas.
    Une idée?

    Merci beaucoup.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    essaie de remplacer le simple quotes par des doubles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed " ..... ${DIR}.... " fichier.txt

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Concernant la variable, c'est normal, car on est dans des quotes simples.

    Pour utiliser des variables il faut être entre guillemets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DIR="AA_BB_TAG_02"
    echo 'Version: TAG_01' | sed s/'^Version.*'/"Version: $DIR"/
    Edit:

    Grilled by To-Ma

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut
    ... ce qui permet de vérifier que dans mon exemple les accolades ne sont pas nécessaire (elles le seraient si l'insertion de DIR était suivie d'autres caractères: ${DIR}blabla ).

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Merci bien, l'autre possibilité est d'écrire comme ceci: '$DIR' dans le sed.

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

Discussions similaires

  1. [Sed]Remplacer une série d'espaces par un délimiteur
    Par progfou dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/01/2011, 15h09
  2. Réponses: 2
    Dernier message: 19/01/2011, 15h41
  3. Réponses: 1
    Dernier message: 30/09/2010, 10h34
  4. Remplacer une ligne de tableau par une autre
    Par Tikaway dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/09/2010, 13h50
  5. Réponses: 5
    Dernier message: 19/01/2007, 22h53

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