Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 11/03/2010, 17h11   #1
Invité de passage
 
Celine
Inscription : mars 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Celine

Informations forums :
Inscription : mars 2010
Messages : 2
Points : 1
Points : 1
Par défaut utilisation d'une variable numérique issue de bash comme paramètre dans gawk

Bonjour,

Je voudrais utiliser une variable issue de mon script shell dans la commande gawk.
Mes colonnes 1 et 3 ont des valeurs numériques et je veux en sortie uniquement les lignes dont la valeur de la colonne 1 est inférieure à ma variable lm1 et la valeur de la colonne 3 inférieure à ma variable lm2 :

Code :
1
2
 
 gawk -F"\t" '$1< ${lm1} && $3< ${lm2} {print $1"\t"$2"\t"$3"\t"$4};' file
ceci ne marche pas, mes variables lm1 et lm2 ne sont pas reconnues dans la commande awk

j'ai donc essayé ceci mais ça ne me donne pas non plus ce que je veux :
Code :
1
2
 
 gawk -F"\t" -v "LM1=$lm1" -v "LM2=$lm2" '$1< $LM1 && $3< $LM2 {print $1"\t"$2"\t"$3"\t"$4};' file
j'ai ensuite essayé plusieurs solutions trouvées sur d'autres forums mais rien ne marche.

Merci aux bonnes âmes qui voudront bien se pencher sur mon problème..

Dernière modification par rosedavril ; 11/03/2010 à 18h57.
rosedavril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 18h49   #2
Invité de passage
 
Celine
Inscription : mars 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Celine

Informations forums :
Inscription : mars 2010
Messages : 2
Points : 1
Points : 1
J'ai finalement trouvé la bonne syntaxe, je donne donc la solution pour ceux qui en auraient besoin.

Code :
1
2
3
 
 
gawk -F"\t" -v "LM1=$lm1" -v "LM2=$lm2" '$1< LM1 && $3< LM2 {print $1"\t"$2"\t"$3"\t"$4};' file
rosedavril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 21h24   #3
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Bonjour,

Avec le code nettoyé, cela donne:
Code :
awk -v lm1=$lm1 -v lm2=$lm2 'BEGIN {FS=OFS="\t"} $1 < lm1 && $3 < lm2 {print $1, $2, $3, $4}' file
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 07h36.


 
 
 
 
Partenaires

Hébergement Web