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

Applications et environnements graphiques Discussion :

Passage de paramètres à awk


Sujet :

Applications et environnements graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Par défaut Passage de paramètres à awk
    Bonjour

    Dans un script linux (sh) j'utilise la commande
    awk '{print substr($0,4,7)}' qui me donne les caractères 4 à 10 de chaque ligne.

    La question est : comment remplacer 4 et 7 par des variables lues dans dans l'appel au script ? extr_don.sh -pos 4 -long 7

    J'ai essayé
    awk '{print substr($0,${pos},${long})}' et j'ai eu comme message d'erreur
    !parse error
    !parse error

    awk '{print substr ($0,$pos,$long)}' : pas de message d'erreur mais la zone extraite contient 20 caractères à partir du 31°

    awk '{print substr($0,`${pos}`,`${long}`)}' : message d'erreur
    ^ caractère invalide dans l'expression


    N'ayant pas trouvé mon bonheur dans les faqs et forums, est-ce que quelqu'un aurait la solution ?

    Merci

  2. #2
    Membre très actif

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Par défaut
    Bonjour,

    D'abord, pour que le script remplace les variables $pos par leur valeur, il faut que la chaîne soit entre guillemets doubles (").

    Ensuite, les arguments fournis au script sur la ligne de commande arrivent dans les variables spéciales $1, $2, $3, ...

    Avec cela, tu dois pouvoir t'en sortir.

    Didier

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Dans le script extr_don.sh, j'imagine que tu as mis les bons paramètres dans les bonnes variables: dans ton exemple, $pos vaut 4 et $long vaut 7. Il y a deux manières de faire (au moins):

    1) Tu passes les variables à awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v newPos=$pos -v newLong=$long '{print substr($0, newPos, newLong)}'
    Ici on initialise deux variables internes de awk avant de démarrer awk.

    2) Tu joues avec les simples guillemets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print substr($0, '$pos', '$long')}'
    Ici on laisse le shell interpréter $pos et $long plutôt que de les laisser à awk (qui lui ne les connaît pas). Il faut en effet se rappeler que l'on passe à awk une longue chaîne que ce programme doit interpréter. On le met entre simples guillemets pour éviter que le shell se mêle de ce qui ne le regarde pas. Cependant, ici il doit s'en mêler un peu pour les valeurs de pos et long.

  4. #4
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut,

    La solution 1 même si plus longue à écrire me semble beaucoup plus propre et claire.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

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

Discussions similaires

  1. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58
  2. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  3. [XSL] Passage de paramètres à un template
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2003, 13h28
  4. passage de paramètres
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/02/2003, 17h28
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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