Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
910 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Valeur dans une variable -> la commande Unix ne fonctionne plus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Valeur dans une variable -> la commande Unix ne fonctionne plus

n°2351440
toto777
Posté le 10-04-2020 à 12:07:41  profilanswer
 

Bonjour,
 
#Je ne sais pas s'il vaut mieux mettre mon message dans la catégorie "Shell/Batch" ou "BI/Big Data".
 
Je suis coincé sur la variabilisation d'une valeur.
 
J'ai trouvé la manière de faire l'équivalent d'un find -mtime pour une recherche de fichiers sur Hahoop.
 
Si je fais la commande :
hdfs dfs -ls /chemin/*.tar.Z | awk '$6 > "2020-04-09"'
Cela me liste bien les fichiers reçus aujourd'hui (la commande indique : supérieure à la date d'hier, donc aujourd'hui).
 
Le $6 est la 6ème colonne rendue par la commande "hdfs dfs -ls", et correspondant à la date du fichier.
 
Mais si je mets la date en variable, ça ne fonctionne plus (pourtant bien avec les guillemets) :
date_hier=\"`date --date '1 days ago' +%Y-%m-%d`\"
echo $date_hier

 donne bien le résultat :
 "2020-04-09"
la commande :
hdfs dfs -ls /chemin/*.tar.Z | awk '$6 > $date_hier'
me liste alors tous les fichiers, sans les filtrer.
 
Pourriez-vous m'aider, svp ?
 
Merci !


Message édité par toto777 le 10-04-2020 à 14:18:29
mood
Publicité
Posté le 10-04-2020 à 12:07:41  profilanswer
 

n°2351457
Farian
Posté le 10-04-2020 à 15:21:37  profilanswer
 

Bonjour ! Passer des variables à AWK est un peu "touchy"
 
Tel quel, j'aurais tendance à utiliser le paramètre -v, ce qui donnerait un truc du genre :  
 
hdfs dfs -ls /chemin/*.tar.Z | awk -v var=$date_hier '$6 > var'
 
Il faudra peut-être un peu modifier (je n'ai pas de quoi tester facilement en ce moment), mais c'est une idée à creuser.
 
Bonne continuation !


---------------
On n'est jamais très fort pour ce calcul !
n°2351459
toto777
Posté le 10-04-2020 à 15:33:34  profilanswer
 

Bonjour Farian,
 
En effet, bien vu, je venais à l'instant de trouver.
Et j'allais donc m'auto-répondre lol.
 
Merci beaucoup en tout cas.
 
Je vais juste répondre avec ce que j'avais prévu de rpéondre, si ça peut en aider certains.

n°2351461
toto777
Posté le 10-04-2020 à 15:42:37  profilanswer
 

Comme l'a dit Farian, il faut en effet déclarer en tant que variable externe si on veut utiliser une variable dans awk, et l'utiliser sans le signe dollar ($) à l'intérieur du awk.
 
Il faut donc utiliser les commandes suivantes, et ça fonctionne ! :
 
date_hier=`date --date '1 days ago' +%Y-%m-%d`
hdfs dfs -ls /chemin*.tar.Z | awk -v date_hier_var=$date_hier '$6 > date_hier_var'

 
La variable $6 m'a trompé, je voulais utiliser la date de la même manière ^^.
 
Petite différence par rapport à mon message initial, il ne faut pas mettre de guillemets (" ) dans la valeur de la variable :
date_hier=`date --date '1 days ago' +%Y-%m-%d`
echo $date_hier

2020-04-09

n°2351462
toto777
Posté le 10-04-2020 à 15:43:22  profilanswer
 

Je suis content d'avoir trouvé par moi-même juste avant de lire ta réponse, mais encore merci beaucoup Farian !

n°2351463
Farian
Posté le 10-04-2020 à 15:48:23  profilanswer
 

De rien ! Ce n'est pas tous les jours qu'il y a un sujet sur awk :)
 
Edit : par rapport aux messages précédents, le $var dans awk peut être très utile, puisque cela permet de récupérer un champ de la ligne qui est parsée dont on ne connait pas la position a priori : si var vaut 1, $var vaut $1, ce qui permet, en fonction d'un éventuel calcul, de récupérer un champ ou un autre.
 
Mais bon, ce n'est pas tous les jours que l'on s'en sert !!!


Message édité par Farian le 10-04-2020 à 15:50:56

---------------
On n'est jamais très fort pour ce calcul !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Valeur dans une variable -> la commande Unix ne fonctionne plus

 

Sujets relatifs
extraire dans une variable le contenu d'une structureDemander une valeur immédiatement sur python
[Ada] Ecrire un programme de gestion de valeur en ligne de commandefiltrer avec commande find
[MariaDB] Commande GRANT ne fonctionne pasTwig -> Utiliser une variable comme nom partiel d'une autre
VBA Excel, TextBox qui ne fonctionne pas.Légende hover sur un iframe player vimeo ne fonctionne pas
Plus de sujets relatifs à : Valeur dans une variable -> la commande Unix ne fonctionne plus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR