AWK code explication
RésoluBonjour,
Je souhaite extraire des données de événement_ics1 et évènement_ics2 en les rangeant dans deux variables date1 et heure1.
J'ai essayé :
date1 = gensub(/^(\[:digit:]{8}).*/, "\\1", "", evenement_ics1)
heure1 = gensub(/.*(\d{6})$/, "\\1", "", evenement_ics1)
Sans succès...
Macintosh / Safari 16.1
4 réponses
-
Sinon, dans une expression régulière, tu pourrais utiliser T et Z comme séparateurs des 2 chaines recherchées.
gawk ' BEGIN { ev1="20211031T080000Z"; date1 = gensub(/(.+)T(.+)Z/, "\\1", "g", ev1); time1 = gensub(/(.+)T(.+)Z/, "\\2", "g", ev1); print date1, time1; }'
-
Bonjour,
Tu as des contraintes sur les commandes à utiliser ? Car pourquoi sur une chaine de longueur fixe s’embêter avec une expression régulière, on peut utiliser un cut
ev1="20211031T080000Z" date1=`echo $ev1|cut -c 1-8`
-
Merci beaucoup. Oui je ne pouvais pas utiliser cut sinon ça serait déjà fait.
-
En awk pur :
awk ' BEGIN { ts = "20211031T080000Z"; yyyymmdd = substr(ts, 1, 8); yyyy = substr(yyyymmdd, 1, 4); mm = substr(yyyymmdd, 5, 2); dd = substr(yyyymmdd, 7, 2); print yyyymmdd; print yyyy; print mm; print dd; }'
