Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/01/2020, à 12:19

Memphis Garnier

Script bash filtrer par date

Bonjour à tous,
je vous souhaite une bonne année 2020.

Je suis débutant aux scripts shell. Je commence tout juste mais j'aurais besoin d'un script assez rapidement.
Je voudrais que mon script éxécute :
Si dans mon champ "inscription" il y a des inscriptions de plus de 6 mois alors je veux supprimer cette personne.
Ce sont des fiches de personnes avec des pleins de champs mais je veux juste m'occuper du champ 'date d'inscription'
Je connais mon script qui permet de supprimer, j'ai juste besoin de savoir comment filtrer mon champs pour supprimer les inscritpions de plus de 6 mois.

Cordialement
Memphis.

Dernière modification par Memphis Garnier (Le 03/01/2020, à 12:21)

Hors ligne

#2 Le 03/01/2020, à 12:39

pingouinux

Re : Script bash filtrer par date

Bonjour,
Sans exemple, ça ne va pas être facile de t'aider… Quelle est la nature du fichier ?

Hors ligne

#3 Le 03/01/2020, à 13:02

Watael

Re : Script bash filtrer par date

salut,

quand il y a des champs, il faut s'orienter vers awk, et plus particulièrement, parce qu'il y a des dates à traiter, Gawk.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 04/01/2020, à 17:06

LeoMajor

Re : Script bash filtrer par date

bonjour,

si cela peut t'inspirer ...

:~$ cat /tmp/test.txt 
nom	prenom	genre	inscriptions	ville
thiers	l	f	2019-07-05	bordeaux
dujardin v	m	2016-01-20	rennes
flores	f	f	2019-12-01	nantes
mattis	n	m	2020-02-26	prochainement
martin  p       m       2018-12-23      paris
dupont  z       f       2017-11-01      marseille		
flaubert m      m       2019-10-23      orléans
pic	b	m	2019-07-01	amiens
:~$ gawk 'BEGIN{"date -d \"6 months ago\" +%s" | getline ref; print "comparé à ",strftime("%Y-%m-%d",ref)}; NR>1 && $4!="" { print "----",$4; nf=patsplit($4,p,/[0-9]+/); tgt=mktime(p[1]" "p[2]" "p[3]" 00 00 00"); if(ref<tgt){print $1,"inscris après ",strftime("%Y-%m-%d",ref)," : ",strftime("%Y-%m-%d",tgt)}else{print $1,"inscris avant ",strftime("%Y-%m-%d",ref)," : ",strftime("%Y-%m-%d",tgt)}; print ""}' /tmp/test.txt 
comparé à  2019-07-04
---- 2019-07-05
thiers inscris après  2019-07-04  :  2019-07-05

---- 2016-01-20
dujardin inscris avant  2019-07-04  :  2016-01-20

---- 2019-12-01
flores inscris après  2019-07-04  :  2019-12-01

---- 2020-02-26
mattis inscris après  2019-07-04  :  2020-02-26

---- 2018-12-23
martin inscris avant  2019-07-04  :  2018-12-23

---- 2017-11-01
dupont inscris avant  2019-07-04  :  2017-11-01

---- 2019-10-23
flaubert inscris après  2019-07-04  :  2019-10-23

---- 2019-07-01
pic inscris avant  2019-07-04  :  2019-07-01

Hors ligne