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 :

Passage de variable à SED


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Par défaut Passage de variable à SED
    Bonjour,
    Je cherche à substituer par sed deux variables définies en awk. Le problème, ces variables (champ et longueur) ne sont pas reconnues par sed. Concrètement, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    awk 'BEGIN { print "Debut" }
            { ligne [NR] = $0 }
    END   { for ( i = 1 ; i <= NR ; i++ )
            {
            champ = substr(ligne[i],31,7)
            longueur = length(ligne[i])
     
                    if ( champ != longueur )
                    {
                    print ligne[i] | "sed 's/champ/longueur/g' > resultat.txt"
                    }
            }
    } ' ${FICHIER}
    J'ai également essayé gsub à la place du sed, mais sans succès.
    Si quelqu'un a une idée, je suis preneur ...

    D'avance, merci

  2. #2
    Expert confirmé 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 : 48
    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
    Par défaut
    dejà une variable doit etre appelée $truc apres sauf pour la valoriser ou c'est truc=......

    ensuite il faut vérifier que sed accepte d'utiliser "live" les variables founies par le script shell telle que.... sans convertion.

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Tu ne peux pas passer des variables de awk à sed comme ça. D'une part, ce n'est pas prévu et d'autre part avec le mécanisme de pipe standard, sed reçoit certes le flux de sortie d'awk mais sans savoir que c'est awk qui lui envoie (et d'ailleurs, il ne veut et ne faut pas qu'il sache que c'est awk qui lui envoie).

    Peut-être que awk propose un mécanisme d'appel de commandes externes , un peu comme le -exec de la commande find. Dans ce cas, il faut voir comment ça s'utilise notamment pour passer des variables. Car quoi qu'il en soit, le seul moyen de "paramétrer" sed c'est de lui passer des variables Shell : sed 's/'$champ'/'$longueur'/g' > resultat.txt (ou plus simplement sed "s/$champ/$longueur/g" > resultat.txt). Ca veut dire que $champ et $longueur ont été définis avant d'appeler sed. C'est la que awk propose peut-être un mécanisme spécifique. En l'état actuel de mes connaissances totalement nulles en awk, je dirais que ça n'existe pas, et que donc, tu n'as pas d'autre choix que d'appeler awk 2 fois auparavant pour définir chacune de ces variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    champ=$(awk ...)
    longueur=$(awk ...)
    if [ ! "$champ" = "$longueur" ]
    then
        sed 's/'$champ'/'$longueur'/g' > resultat.txt
    fi

Discussions similaires

  1. Sed passage de variable = :command garbled
    Par madmaxou dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 15/06/2009, 17h27
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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