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 :

Aide sur les commandes sed et awk


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut Aide sur les commandes sed et awk
    Bonjour à tous,

    Je suis en train d'écrire un script shell qui a pour but les actions suivantes:

    Modifier les valeurs d'un champs dans un fichier.

    Ex:
    La ligne de commande permettra de choisir la valeur de m1 a remplacé dans le fichier

    Valeur de m1: 50

    Résultat:

    Dans le fichier, toutes les valeurs de m1 seront donc remplacée par 50

    Voici la commande que j'avais trouvé pour faire cela:

    sed 's/arg1/arg2/g 'file1|>file2

    Cependant ça ne fonctionne pas car si j'ai plusieurs valeur de m1 dans le fichier...toutes ne seront pas remplacée

    Je sais que l'on peux faire ça avec awk, par contre je ne m'en sort pas pour écrire cela. Quelqu'un aurait-il déjà résolu ce genre de pb

    Merci à tous pour votre aide.
    @+

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Tu veux que chaque occurrence de "m1" soient remplacée ou pas?

    Si, oui, l'option g dans la commande sed devrait faire l'affaire...

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    merci pour ta réponse...

    mais mon souci est le suivant:

    lorsque je lance ma commande, je dis: remplacer toutes les occurences de m1 = 25 par 50 par exemple. Mais toutes les occurences de m1 ne sont pas égales à 25. Ce que je voudrai et que je n'arrive pas à faire, c'est remplacer toutes les occurences de m1 quelque soit leur valeur par 50 (dans mon exemple)

    d'avance merci.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Essaye ceci pour voir si ça répond à ta question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "m1=52 m2=54 m1=10 m10=25" | sed -r 's/m1=[0-9]+/m1=50/g'

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Pile ce que je cherche moi aussi! Merci.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Merci à tous pour vos réponses et pour votre aide...

    Je chipotte...dsl en fait je voudrai rendre ça encore plus dynamique en faisant ceci:

    $ m1 = ....

    L'utilisateur saisit la valeur en ligne de commande et toutes les valeurs se changent dans le fichier.

    Cela est-il possible à réaliser ?

    encore merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Quelque-chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #! /bin/sh
     
    printf "Entrez une valeur pour m1: "
    read m1
    sed -r 's/m1=[0-9]+/m1='$m1'/g' /fichier/a/changer

Discussions similaires

  1. [Débutant] Aide sur les Commandes MATLAB
    Par takatik dans le forum MATLAB
    Réponses: 1
    Dernier message: 07/02/2014, 09h33
  2. Besoin d'aide sur la commande sed
    Par veis dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 10/01/2013, 17h41
  3. SQLite besoin d'aide sur les commandes
    Par PyNub dans le forum Général Python
    Réponses: 2
    Dernier message: 10/10/2011, 21h18
  4. demande d'aide sur les commandes de linux
    Par mabca dans le forum Autres
    Réponses: 3
    Dernier message: 04/05/2009, 15h35
  5. cherche aide sur les commande vbs
    Par neuneu1 dans le forum VBScript
    Réponses: 3
    Dernier message: 11/10/2007, 09h59

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