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 -
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
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
A voir également:
- Awk et variabilisation
- Fonctionnement de foreach et awk et set ✓ - Forum Shell
- Awk dédoublonner un print ✓ - Forum Shell
- SED ou Awk sous windows ?? - Forum Windows
- Suppression de lignes en awk ✓ - Forum Shell
- Awk : tri selon la date ✓ - Forum Shell