Awk et variabilisation

Résolu
hexomon Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -  
hexomon Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit problème en shell sur AIX :)

Je dois passer un awk dans un script dont les variables de champ attachées au print doivent être variabilisées. Le but est le suivant: le script devra chercher dans un fichier quel est le champ voulu (exemple: le 8), et un awk devra être généré en conséquence pour faire la recherche dans le fichier voulu, c'est à dire: awk '{print $8}' Fichier



Je n'arrive pas à obtenir de résultats....

Des exemples concrets :

hh=\$8
Commande=$(awk '{print $hh}' Fichier)
$Commande

ca donne:
+ hh=$8
+ + awk {print $hh} Fichier
awk : 0602-562 La zone $() n'est pas correcte.
Le numéro de la ligne de saisie est 1.Le fichier est Fichier.
Le numéro de la ligne source est 1.
Commande=


Ou encore, en ajoutant un echo dans la variable Commande:
hh=\$8
Commande=$(echo "awk '{print $hh}' Fichier")
$Commande

Ca donne:
+ hh=$8
+ + echo awk '{print $8}' Fichier
Commande=awk '{print $8}' Fichier
+ awk '{print $8}' Fichier
Erreur de syntaxeLa ligne source est 1.
Le contexte de l'erreur est
>>> ' <<<
awk : 0602-540 Il manque un caractère }.
awk : 0602-500 QuitterLa ligne source est 1.


Tout ce que je veux, c'est que mon 8 (dans l'exemple) soit variabilisé dans le print d'un awk, lui-même variabilisé pour être lance comme une commande. Ainsi, je pourrai ensuite créer un awk personnalisé en fonction du type de recherche voulu, sans passer par un fichier intermédiaire (c'est ce que je veux éviter).

Si ça vous parle, j'accueillerai avec joie vos propositions :)

Merci d'avance et bonne journée,

Hexomon

1 réponse

jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 

johand@osiris:~/tmp$ v='$8'
johand@osiris:~/tmp$ comd='awk "{print $v}"'
johand@osiris:~/tmp$ eval $comd 
1 2 3 4 5 6 7 8 9
8
aa zz ee

a z e r t y u i o p q s
i

0
hexomon Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci beaucoup :))))))
0