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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Extraction données via script

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraction données via script

n°2226611
Don Tortug​a
Posté le 29-04-2014 à 17:50:45  profilanswer
 

Bonjour,
 
Le but de mon script et de créer une liste des utilisateurs dont la dernière connexion remonte à au moins 3 mois. Comme je débute en script sous Unix j'y vais petit à petit  :D  
 

Code :
  1. #!/bin/sh
  2. currentDate=$(date +%s)
  3. cat users.txt|
  4. while read G;
  5.         date=$(cut -d"," -f5)
  6.         do echo "$date"
  7. done


 
Le problème que j'ai avec ce minuscule bout de code c'est que lorsque je l'exécute il me sort bien la date mais aussi une flopée de ligne vide, j'ai bien regardé mon fichier et je n'ai aucune ligne vide sur lesquelles le script pourrait boucler.
 
Une idée du problème ?
 
Merci,  :jap:


---------------
Je fais un route voyage, viens voir ! | Je fais aussi des photos de poissons panés
mood
Publicité
Posté le 29-04-2014 à 17:50:45  profilanswer
 

n°2226628
Soileh
Lurkeur professionnel
Posté le 29-04-2014 à 19:51:22  profilanswer
 

:hello: !
Es-tu sûr que ton début de code est fonctionnel ? :??: Quand je l'exécute, il tombe en boucle infini [:er dehy:3]
Pour commencer, j'aurais vu un truc plutôt dans ce genre :

Code :
  1. #!/bin/sh
  2. currentDate=$(date +%s)
  3. cat users.txt|while read G
  4. do
  5.   date=$(cut -d"," -f5)
  6.   echo "$date"
  7. done
 

Edit : Voici un code plus propre :

Code :
  1. #!/bin/sh
  2. currentDate=$(date +%s)
  3. cat users.txt|while read G
  4. do
  5.   date=$(echo $G|cut -d"," -f5)
  6.   echo "$date"
  7. done


Message édité par Soileh le 29-04-2014 à 19:58:39

---------------
And in the end, the love you take is equal to the love you make
n°2227893
Don Tortug​a
Posté le 13-05-2014 à 15:18:51  profilanswer
 

Salut,
 
Effectivement il y avait un petit problème avec mon code, boucle infinie  :D  
 
Je l'ai modifié afin qu'il me convertisse ma date en timestamp (ce que j'ai réussi à faire)
 

Code :
  1. #!/bin/sh
  2. currentDate=$(date +%s)
  3. cat users.txt|while read G
  4. do
  5.   dateToConvert=$(echo $G|cut -d"," -f5)
  6.   timestampDate=$(date -d "$dateToConvert" "+%s" )
  7.   echo $timestampDate
  8. done


 
Mon fichier (users.txt) sur lequel je boucle se présente de cette façon
 

john.doe@jetapefort.com,/XX_Divisions/AAA,True,ADMIN,2013-04-05 14:44:01


 
L'idée serait de remplacer pour chaque ligne la date par son timestamp correspondant.  
Faut obligatoirement que je me tape des regex avec Sed pour remplacer ?
 
Merci  :jap:


---------------
Je fais un route voyage, viens voir ! | Je fais aussi des photos de poissons panés
n°2227899
Don Tortug​a
Posté le 13-05-2014 à 16:40:41  profilanswer
 
n°2230458
Don Tortug​a
Posté le 11-06-2014 à 19:52:25  profilanswer
 

Je reviens vers vous pour une petite question,
 

Code :
  1. cat test.txt |while read L;
  2. do
  3.         date=$(echo $L|cut -d"," -f8)
  4.         res=$(($currentDate - $date))
  5.         if["$res" -gt 0]
  6.         then
  7.                 echo "to suspend"
  8.         else
  9.                 echo "nothing"
  10.         fi
  11.         #sed -i 's/'$date'/'$res'/g' test.txt
  12. done


 
J'obtiens le message suivant : script.sh: 19: script.sh: Syntax error: "then" unexpected (expecting "done" )
 
La ligne 19 correspond à la ligne 7 ici.
 
Où est-ce que je me plante  :??:  


---------------
Je fais un route voyage, viens voir ! | Je fais aussi des photos de poissons panés
n°2230463
Soileh
Lurkeur professionnel
Posté le 11-06-2014 à 21:17:28  profilanswer
 

Don Tortuga a écrit :

Je reviens vers vous pour une petite question,

 
Code :
  1. cat test.txt |while read L;
  2. do
  3.         date=$(echo $L|cut -d"," -f8)
  4.         res=$(($currentDate - $date))
  5.         if["$res" -gt 0]
  6.         then
  7.                 echo "to suspend"
  8.         else
  9.                 echo "nothing"
  10.         fi
  11.         #sed -i 's/'$date'/'$res'/g' test.txt
  12. done
 

J'obtiens le message suivant : script.sh: 19: script.sh: Syntax error: "then" unexpected (expecting "done" )

 

La ligne 19 correspond à la ligne 7 ici.

 

Où est-ce que je me plante  :??:


C'est peut-être à cause de l'absence des espaces dans le if :??: ; il faudrait modifier la ligne de la manière suivante :

Code :
  1. if [ "$res" -gt 0 ]


:jap:


Message édité par Soileh le 11-06-2014 à 21:21:04

---------------
And in the end, the love you take is equal to the love you make
n°2230529
Don Tortug​a
Posté le 12-06-2014 à 10:09:09  profilanswer
 

ça me parait étrange mais je teste ça cet aprem  :jap:


---------------
Je fais un route voyage, viens voir ! | Je fais aussi des photos de poissons panés
n°2230583
Don Tortug​a
Posté le 12-06-2014 à 13:01:46  profilanswer
 

Exact ça venait bien de ça, je pensais pas du tout que l'absence d'un espace pouvait faire planter le script.
 
Merci encore  :jap:


---------------
Je fais un route voyage, viens voir ! | Je fais aussi des photos de poissons panés

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

  Extraction données via script

 

Sujets relatifs
presence raccourci bureau et le supprimer vbs scriptproblème pour inserer des données dans une table à partir d'un Jframe
correction de script batchModification des données via formulaire
Lancer des script .vbs depuis une page HTMLPassage de paramètre entre procédure stockée et script Php
SCRIPT, detecter lettre hdd externe en batchaide exploitation table de donnees
Script shell pour comparaison de 2 fichier et récupération du résultat 
Plus de sujets relatifs à : Extraction données via script


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR