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 :

Rechercher plusieurs mots dans un fichier avec sed


Sujet :

Shell et commandes GNU

  1. #1
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut Rechercher plusieurs mots dans un fichier avec sed
    Bonjour,
    Avec sed j'arrive très bien à rechercher/remplacer un mot par un autre. Mais savez vous s'il est possible, non pas de remplacer toutes les occurences, mais d'avoir 2 mots à chercher qui seront remplacés par 2 valeurs respectives. Ce dans la même commande. Par exemple voila mon fichier en entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto mange une valeur1 avec du valeur2
    Valeur de remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern_a_remplacer_par_valeur1 et pattern_a_remplacer_par_valeur2
    .
    Et donc en sortie du fichier je veux avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto mange une pattern_a_remplacer_par_valeur1 avec du pattern_a_remplacer_par_valeur2
    Auriez vous idée svp?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "toto mange une valeur1 avec du valeur2" | sed 's/valeur1/tartine/;s/valeur2/chocolat/'
    toto mange une tartine avec du chocolat
     
    $
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "toto mange une valeur1 avec du valeur2" | sed 's/valeur1/tartine/;s/valeur2/chocolat/'
    toto mange une tartine avec du chocolat
     
    $
    Good . Mais en attendant une solution, j'ai dû tester avec le bon vieux utilitaire awk, qui marchait aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F "=" '{gsub("'"$MODELE_1"'","'"$VAR_ENV_1"'",$2);gsub("'"$MODELE_2"'","'"$VAR_ENV_2"'",$2);print $1"="$2}' fichPropModele.txt > fichPropDefinitif.txt
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    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 DevServlet Voir le message
    Good . Mais en attendant une solution, j'ai dû tester avec le bon vieux utilitaire awk, qui marchait aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F "=" '{gsub("'"$MODELE_1"'","'"$VAR_ENV_1"'",$2);gsub("'"$MODELE_2"'","'"$VAR_ENV_2"'",$2);print $1"="$2}' fichPropModele.txt > fichPropDefinitif.txt
    l'utilisation des variables dans sed fonctionnent grosso modo pareil en faisant attention aux quotes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo toto | sed "s/toto/"$newvalue"/"

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par frp31 Voir le message
    l'utilisation des variables dans sed fonctionnent grosso modo pareil en faisant attention aux quotes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo toto | sed "s/toto/"$newvalue"/"
    Euh... si tu entoures l'expression avec des quotes doubles, pas la peine de sortir en répétant les quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed "s/toto/${newvalue}/"
    Par contre si tu entoures l'expression de quotes simples, là oui il faut sortir de l'expression, protéger sa variable et revenir dans l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed 's/toto/'"${newvalue}"'/'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

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

Discussions similaires

  1. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  2. [batch] Comment rechercher deux mots dans un fichier .txt ?
    Par koKoTis dans le forum FAQs Windows
    Réponses: 0
    Dernier message: 10/02/2009, 17h54
  3. Recherche de mot dans un fichier
    Par Bennybear dans le forum C++
    Réponses: 6
    Dernier message: 23/03/2007, 20h12
  4. Recherche plusieurs termes dans un fichier
    Par Kaoziun dans le forum Linux
    Réponses: 2
    Dernier message: 03/10/2006, 15h02
  5. Plusieurs formulaires dans un fichier avec plusieurs méthodes post
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2006, 15h04

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