[AWK] Utilisation de "-v" pour passer un Array ?

Utilisation de "-v" pour passer un Array ? [AWK] - Shell/Batch - Programmation

Marsh Posté le 30-09-2005 à 08:53:18    

Hello,
 
J'ai un script ksh dans lequel une variable contient le résultat d'une commande multi-lignes du genre:

echo "$VAR"
var1:value1
var2:value2
varN:valueN

Le FS ":" pouvant être changé bien sûr ...
 
J'aimerai passer cette variable dans AWK via l'option -v (awk -v VarArray="$VAR" ou bien VarArray=`echo "$VAR"` pour pouvoir générer un array dans la BEGIN {} section en vue de l'utiliser sur le traitement d'un fichier ou de l'output d'une autre commande de la sorte:

print Array[var1] -> value1


Ou bien utiliser la commande getline dans le script AWK en vue d'ouvrir une source externe VAR/File ...
Des idées ? Actuellement j'ai l'impression que AWK (en fait le NAWK de Solaris comparable à GAWK) n'aime pas les variables comportant des CR.
 
Merci d'avance !


Message édité par Deadlock le 30-09-2005 à 08:53:53

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 30-09-2005 à 08:53:18   

Reply

Marsh Posté le 30-09-2005 à 09:18:10    

Bon ben j'ai trouvé en fait :)

BEGIN {
    FS = ":"
    Cmd="echo $VAR"
    while ((Cmd | getline) > 0)
        Array[$0] = $1
    close(Cmd)
}

Bon weekend.


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed