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 :

Cherche une commande shell/bash pour traitement sur fichier


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 6
    Points
    6
    Par défaut Cherche une commande shell/bash pour traitement sur fichier
    Bonjour,

    je souhaite configurer automatiquement des variables dans un fichier nommé toto dont voici le format:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    --- toto ---
    ADMIN_FROM=xxxxx
    ADMIN_FROM_PORT=xxxx
    Plus précisément, je cherche la syntaxe d'une ligne de commande (sed / awk ou grep) dans un fichier modif.sh me permettant de positionner des valeurs après le "="
    Sachant que ces valeurs contiennent des guillemets et d'autres caractères dont le résultat est de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    --- toto ---
    ADMIN_FROM="10.0.0.1/24(eth1)"
    ADMIN_FROM_PORT="123 345 456"
     
    --- modif.sh ---
    VARFROM="10.0.0.1/24(eth1)"
    VARFROMPORT="123 345 456"
    Compléter la valeur après ADMIN_FROM= du fichier toto par $VARFROM.
    Compléter la valeur après ADMIN_FROM_PORT= du fichier toto par $VARFROM_PORT.

    J'ai testé plusieurs commandes mais sans y parvenir.

    Merci d'avance pour votre aide.

    Breizho

  2. #2
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    si je résume
    tu as un fichier texte c:\truc\toto
    et un fichier texte c:\taratata\modif.sh

    si le contenu de toto peut se retrouver au début du fichier modif.sh, tu peux créer un fichier c:\truc\source.sh contenant le reste du fichier modif.sh SANS les lignes correspondantes à toto et faire un simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copy c:\truc\toto + c:\truc\source.sh c:\taratata\modif.sh

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 602
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 602
    Points : 19 511
    Points
    19 511
    Par défaut
    Bonjour,

    sed est l'outil le plus adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ var_1="après"
    $ echo "var_1=\"$var_1\""
    var_1="après"
    $ echo 'variable_1="avant"' | sed '/^variable_1/s/=.*/="'"$var_1"'"/'
    variable_1="après"
    les variables ne sont pas développées entre guillemets simples (' ').

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,
    merci pour vos retours.
    Je vais retester cela et revenir vers vous si besoin.
    Encore merci;
    bzh

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par breizho35 Voir le message
    Plus précisément, je cherche la syntaxe d'une ligne de commande (sed / awk ou grep) dans un fichier modif.sh me permettant de positionner des valeurs après le "="
    Sachant que ces valeurs contiennent des guillemets et d'autres caractères dont le résultat est de la forme:
    L'histoire ne dit pas si la chaine xxxxx contient déjà des guillemets. J'ai donc fait l'hypothèse (comme N_BaH) qu'elle n'en contenait pas nécessairement, mais elle peut contenir d'autres caractères "spéciaux".

    Je ne connais pas bien la liste des caractères "gênants" à droite pour sed, mais il y a au moins le séparateur "/" (en général) et le backslash "\" (pour les références arrière). Il faut donc les "quoter" dans le substitute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ VARFROM='"10.0.0.\1/24(eth$1)"'
    $ echo $VARFROM
    "10.0.0.\1/24(eth$1)"
    $ echo "ADMIN_FROM=xxxxx" | sed '/^ADMIN_FROM/s/=.*/='"$(echo "$VARFROM" | sed -e 's:\([/\]\):\\\1:g')"/
    ADMIN_FROM="10.0.0.\1/24(eth$1)"
    Ici, j'ai quoté le / et le \. Mais peut-être y en a-t-il d'autres?
    Apparemment, le $ passe bien car il n'est pas expansé par le shell et ne représente rien en position droite du substitute.

Discussions similaires

  1. bouton pour lancer une commande shell sur le web
    Par hamdii dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2012, 13h56
  2. Creer une commande Shell a partir d'un fichier
    Par oldscrout dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 21/12/2007, 17h04
  3. [C] code pour executer une commande shell
    Par waldoun dans le forum Linux
    Réponses: 3
    Dernier message: 05/05/2007, 23h41
  4. Problème sur une commande shell
    Par nicolas66 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 10/07/2006, 22h47

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