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

Linux Discussion :

Tableau en paramètre - Shell et Awk


Sujet :

Linux

  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut Tableau en paramètre - Shell et Awk
    Bonour,
    Je souhaite transmettre à la commande awk, une variable shell de type tableau.
    Il semble que ce ne soit pas possible avez-vous une idée ?

    Le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    FormaterFichierColonneFixe()
    {
      awk -v tabLenChamp="$2" 'BEGIN \
        	{
        		FS=";";
        	}
        	{
     
        	print tabLenChamp[1];
              }
            END {}' $1
    }
    Merci pour vos réponses.

  2. #2
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Bonjour,

    Tu peux creer le code awk en le mettant dans une variable shell. Exemple d'un script utilisant ce systeme (voir la vairable INIT_TAB_AWK) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    INIT_TAB_AWK=""
    count_case=0
    FILE_PARSE=$1
     
    usage()
    {
        echo "Usage: count_letter.sh file [ letters ]" 2>&1
        exit 1
    }
     
    if [ ! -f "$1" ] ; then
        echo "$1: No such file" 2>&1
        usage
    fi
     
    shift
    for letter in `echo $@`
      do
      INIT_TAB_AWK="$INIT_TAB_AWK tab_search[${count_case}] = \"$letter\"; final_tab[${count_case}] = 0; "
      count_case=`expr $count_case + 1`
    done
     
    #echo $INIT_TAB_AWK;                                                                                     
     
    cat $FILE_PARSE | awk -v tab_search=0 -v final_tab=0 -v tab=0 -v nb_letter=0 -v chara=0 -v chara2=0 "BEGIN { $INIT_TAB_AWK } { split(\$0, tab, \"\"); for (chara in tab) { for (chara2 in tab_search) { if (tab_search[chara2] == tab[chara]) { final_tab[chara2]++ } } } } END { for (chara in final_tab) { print tab_search[chara] \" => \" final_tab[chara] } }"
    exit $?

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut
    J'ai essayé ton exemple mais j'ai tout de suite erreur dans la partie initialisation après le BEGIN, il n'accepte pas le $ devant les variables.

    Les commandes awk unix et linux sont-elles les mêmes ?

  4. #4
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Citation Envoyé par gc243
    J'ai essayé ton exemple mais j'ai tout de suite erreur dans la partie initialisation après le BEGIN, il n'accepte pas le $ devant les variables.

    Les commandes awk unix et linux sont-elles les mêmes ?
    Une erreur ? Ca fonctionne parfaitement. Tu utilises quoi pour executer ce shell-script ?

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Citation Envoyé par gc243
    Les commandes awk unix et linux sont-elles les mêmes ?
    Il en existe plusieurs moutures. Il est probable que sous Linux tu auras en fait gawk.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Salut
    Nyal tu peux donner l'adresse de ta doc sur awk stp
    merci

  7. #7
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Une erreur ? Ca fonctionne parfaitement. Tu utilises quoi pour executer ce shell-script ?
    Ton code doit fonctionner parfaitement j'ai plutôt un probème d'incompréhesion.
    Par ailleurs, je travaille sous UNIX et non sous LINUX il y a peut-être un pb d'incompatibilité.

    Concernant la doc awk, je n'ai que l'aide syntaxique de la ligne de commande .

    Je continue à checher mais ça m'aiderait beaucoup si je pouvais passer ce foutu tableau à awk.

  8. #8
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut
    Ca marche, j'ai mis un petit moment pour déchiffrer le code de Nyal. En fait la commande awk n'accepte pas de paramètre de type tableau. L'astuce consiste à constituer la commande awk de manière dynamique.

    Merci pour vos réponses.

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

Discussions similaires

  1. Shell avec awk dans aix7
    Par neneke dans le forum Autres langages
    Réponses: 1
    Dernier message: 10/06/2015, 10h34
  2. Réponses: 9
    Dernier message: 10/06/2013, 09h24
  3. shell et awk
    Par mok6120 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/07/2009, 16h18
  4. Problème de passage de tableau Shell --> AWK
    Par LestoK dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 22/07/2009, 16h07
  5. Réponses: 3
    Dernier message: 18/07/2007, 17h20

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