Mise en forme de données récupérées
Résolu/Fermé
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
-
24 juin 2014 à 11:08
ElPibeOro Messages postés 7 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 7 juillet 2014 - 7 juil. 2014 à 14:03
ElPibeOro Messages postés 7 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 7 juillet 2014 - 7 juil. 2014 à 14:03
A voir également:
- Mise en forme de données récupérées
- Mise en forme conditionnelle excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise en forme tableau croisé dynamique - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
- Reinstaller windows sans perte de données - Guide
5 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
24 juin 2014 à 12:11
24 juin 2014 à 12:11
Salut,
Pour les trois lignes à récupérer :
Et pour la date (à partir de la dernière ligne récupérée) :
Pour les trois lignes à récupérer :
$ cat plop
From: "DUPONT Pierre [CERA]" <dupont.pierre@gmail.fr>
To: =?iso-8859-1?Q?MARTIN_Julien_=5BCERA=5D?=
<julien.martin@gmail.fr>
Subject: SAV AGENCE
Thread-Topic: SAV AGENCE
Thread-Index: Ac+JYBcZ/f1fG23NS82TEygEo3u5mw==
Date: Mon, 16 Jun 2014 14:45:08 +0200
$ grep -Po '(<|Date: )\K[^>]*' plop
dupont.pierre@gmail.fr
julien.martin@gmail.fr
Mon, 16 Jun 2014 14:45:08 +0200
Et pour la date (à partir de la dernière ligne récupérée) :
$ date -d 'Mon, 16 Jun 2014 14:45:08 +0200' '+%d/%m/%Y'
16/06/2014
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
24 juin 2014 à 12:26
24 juin 2014 à 12:26
hello
en supposant que le destinataire est toujours à la ligne suivant le To:
essayer
en supposant que le destinataire est toujours à la ligne suivant le To:
essayer
$ read EXP DEST DATE <<<$(awk -F "[<> ]" '/^From:/ {print $(NF-1)} /^To:/ {getline; print $(NF-1)} /^Date:/ {$1=""; print}' fichier)
$ DATE=$(date -d "$DATE" "+%d/%m/%Y")
$ printf "%s\n" $EXP $DEST $DATE
dupont.pierre@gmail.fr
julien.martin@gmail.fr
16/06/2014
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
24 juin 2014 à 14:58
24 juin 2014 à 14:58
Merci à vous deux pour vos réponses !
Etant débutant dans ce langage de programmation, je n'ai pas trop compris l'explication de zipe31.. notamment le $ cat plop . Il permet de récupérer les données telles que je les ai déjà actuellement ?
dubcek voici l'état de mon code actuellement :
# == Suivi - Debut des traitements
${SUIVI_DEBUT} ${ID_TRT} SHELL $0
RES=$(awk 'BEGIN {FS = ":"; varFrom = ""; varTo = ""; varDate = ""; flag = 0;}
$1 == "Subject" {flag=0;}
flag == 1 {varTo = varTo $0;}
$1 == "From" {varFrom = $0;}
$1 == "To" {varTo = $0; flag=1;}
$1 == "Date" {varDate = $0;}
END {print varFrom "µ"; print varTo "µ"; print varDate;}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
echo ${RES} | IFS="µ" read EXPEDITEUR DESTINATAIRE DATE_ENVOI <<<$(awk -F "[<> ]" '/^From:/ {print $(NF-1)} /^To:/ {getline; print $(NF-1)} /^Date:/ {$1=""; print}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
$ DATE_ENVOI=$(date -d "$DATE_ENVOI" "+%d/%m/%Y")
echo "EXPEDITEUR=${EXPEDITEUR}"
echo "DESTINATAIRE=${DESTINATAIRE}"
echo "DATE_ENVOI=${DATE_ENVOI}"
Ca fonctionne bien pour l'expéditeur, je ne récupère rien pour le destinataire, et pour la date ça ne fonctionne pas non plus. Pourtant vous avez êtes tous les deux d'accord sur le code à mettre en place.
Peut-être que je ne le place pas au bon endroit ? Je me répète, je suis vraiment débutant donc excusez moi si je fais des erreurs grossières.
Merci encore pour votre aide
Etant débutant dans ce langage de programmation, je n'ai pas trop compris l'explication de zipe31.. notamment le $ cat plop . Il permet de récupérer les données telles que je les ai déjà actuellement ?
dubcek voici l'état de mon code actuellement :
# == Suivi - Debut des traitements
${SUIVI_DEBUT} ${ID_TRT} SHELL $0
RES=$(awk 'BEGIN {FS = ":"; varFrom = ""; varTo = ""; varDate = ""; flag = 0;}
$1 == "Subject" {flag=0;}
flag == 1 {varTo = varTo $0;}
$1 == "From" {varFrom = $0;}
$1 == "To" {varTo = $0; flag=1;}
$1 == "Date" {varDate = $0;}
END {print varFrom "µ"; print varTo "µ"; print varDate;}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
echo ${RES} | IFS="µ" read EXPEDITEUR DESTINATAIRE DATE_ENVOI <<<$(awk -F "[<> ]" '/^From:/ {print $(NF-1)} /^To:/ {getline; print $(NF-1)} /^Date:/ {$1=""; print}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
$ DATE_ENVOI=$(date -d "$DATE_ENVOI" "+%d/%m/%Y")
echo "EXPEDITEUR=${EXPEDITEUR}"
echo "DESTINATAIRE=${DESTINATAIRE}"
echo "DATE_ENVOI=${DATE_ENVOI}"
Ca fonctionne bien pour l'expéditeur, je ne récupère rien pour le destinataire, et pour la date ça ne fonctionne pas non plus. Pourtant vous avez êtes tous les deux d'accord sur le code à mettre en place.
Peut-être que je ne le place pas au bon endroit ? Je me répète, je suis vraiment débutant donc excusez moi si je fais des erreurs grossières.
Merci encore pour votre aide
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
24 juin 2014 à 15:27
24 juin 2014 à 15:27
je n'ai pas trop compris l'explication de zipe31.. notamment le $ cat plop . Il permet de récupérer les données telles que je les ai déjà actuellement ?Oui. En fait c'est courant ici de créer un fichier nommé plop afin de reproduire les besoins tels qu'ils on été demandés. Et cette commande n'est là que pour te montrer sur quoi j'ai basé ma syntaxe.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 24/06/2014 à 15:50
Modifié par dubcek le 24/06/2014 à 15:50
affiche le contenu de $RES après le 1er awk
echo "$RES" | cat -Asi le 2ème awk lit dans le fichier, pourquoi echo ${RES} | IFS="µ" read EXP......
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
24 juin 2014 à 16:00
24 juin 2014 à 16:00
zipe31 : d'accord merci pour ces explications. Mais je ne comprends pas où placer cette instruction. Dois-je y mettre avant le 1er awk ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
24 juin 2014 à 16:02
24 juin 2014 à 16:02
Non, tu ne dois la mettre nulle part, elle est juste là pour te montrer sur quoi j'ai lancé ma commande.
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
24 juin 2014 à 16:07
24 juin 2014 à 16:07
Ok mais aprés tu met l'instruction suivante : $ grep -Po '(<|Date: )\K[^>]*' plop
En fait je ne vois pas par quoi remplacer le plop sachant que je ne l'ai pas dans mon code que j'ai mi plus haut.
En fait je ne vois pas par quoi remplacer le plop sachant que je ne l'ai pas dans mon code que j'ai mi plus haut.
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
1 juil. 2014 à 15:39
1 juil. 2014 à 15:39
J'ai réussi à avancer concernant ma récupération de données :
Voici le code que j'ai mis en place :
RES=$(awk 'BEGIN {FS = ":"; varFrom = ""; varTo = ""; varDate = ""; flag = 0; vPdeb=0; vPfin=0;}
$1 == "Subject" {flag=0;}
flag == 1 {varTo = varTo $0; vPdeb=index(varTo,"<");vPfin=index(varTo,">"); varTo = substr(varTo,vPdeb+1,vPfin-vPdeb-1); }
$1 == "From" {vPdeb=index($0,"<");vPfin=index($0,">");varFrom = substr($0,vPdeb+1,vPfin-vPdeb-1);}
$1 == "To" {varTo = $0; flag=1;}
$1 == "Date" {vPdeb=index($0,",")+1;vPfin=index($0,"+")-1; varDate = substr($0,vPdeb+1,vPfin-vPdeb-1);}
END {print sprintf("export EXPEDITEUR=%s;export DESTINATAIRE=%s;export DATE_ENVOI=\"%s\"",varFrom,varTo,varDate);}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
echo "$RES"
Et voici ce que je récupère :
export EXPEDITEUR=pierre.dupont@gmail.fr;export DESTINATAIRE=julien.martin@gmail.fr;export DATE_ENVOI="16 Jun 2014 14:45:08"
Mon problème est désormais de pouvoir récupérer ces données sous cette forme :
EXPEDITEUR=pierre.dupont@gmail.fr;
DESTINATAIRE=julien.martin@gmail.fr;
DATE_ENVOI="16 Jun 2014 14:45:08"
Je ne vois pas trop comment faire cela. Donc si vous avez une idée ?
Merci d'avance
Voici le code que j'ai mis en place :
RES=$(awk 'BEGIN {FS = ":"; varFrom = ""; varTo = ""; varDate = ""; flag = 0; vPdeb=0; vPfin=0;}
$1 == "Subject" {flag=0;}
flag == 1 {varTo = varTo $0; vPdeb=index(varTo,"<");vPfin=index(varTo,">"); varTo = substr(varTo,vPdeb+1,vPfin-vPdeb-1); }
$1 == "From" {vPdeb=index($0,"<");vPfin=index($0,">");varFrom = substr($0,vPdeb+1,vPfin-vPdeb-1);}
$1 == "To" {varTo = $0; flag=1;}
$1 == "Date" {vPdeb=index($0,",")+1;vPfin=index($0,"+")-1; varDate = substr($0,vPdeb+1,vPfin-vPdeb-1);}
END {print sprintf("export EXPEDITEUR=%s;export DESTINATAIRE=%s;export DATE_ENVOI=\"%s\"",varFrom,varTo,varDate);}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
echo "$RES"
Et voici ce que je récupère :
export EXPEDITEUR=pierre.dupont@gmail.fr;export DESTINATAIRE=julien.martin@gmail.fr;export DATE_ENVOI="16 Jun 2014 14:45:08"
Mon problème est désormais de pouvoir récupérer ces données sous cette forme :
EXPEDITEUR=pierre.dupont@gmail.fr;
DESTINATAIRE=julien.martin@gmail.fr;
DATE_ENVOI="16 Jun 2014 14:45:08"
Je ne vois pas trop comment faire cela. Donc si vous avez une idée ?
Merci d'avance
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
1 juil. 2014 à 16:19
1 juil. 2014 à 16:19
END {printf "EXPEDITEUR=%s;\nDESTINATAIRE=%s;\nDATE_ENVOI=\"%s\"\n",varFrom,varTo,varDate);}'
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 2/07/2014 à 09:05
Modifié par dubcek le 2/07/2014 à 09:05
read EXPEDITEUR DESTINATAIRE DATE_ENVOI <<<$(awk ....
.......
# changer le block END
END {printf "%s %s \"%s\"", varFrom, varTo, varDate}
)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ElPibeOro
Messages postés
7
Date d'inscription
mardi 24 juin 2014
Statut
Membre
Dernière intervention
7 juillet 2014
7 juil. 2014 à 14:03
7 juil. 2014 à 14:03
J'ai réussi à récupérer ce que je souhaitais, voilà mon code :
et voici ce que je récupère :
EXPEDITEUR=pierre.dupont@gmail.fr
DESTINATAIRE=julien.martin@gmail.fr
DATE_ENVOI=16 Jun 2014 14:45:08
Le problème que je rencontre désormais est que j'aimerai intégrer ces résultats dans 3 variables VarFrom, VarTo, et VarDate.
J'ai essayé avec ce code mais ça ne fonctionne pas...
Merci d'avance pour votre aide
read EXPEDITEUR <<<$(awk -F "[<> ]" '/^From:/ {print $(NF-1)} ' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
DESTINATAIRE=$(awk 'BEGIN {FS = ":"; varTo = ""; flag = 0;}
$1 == "Subject" {flag=0;}
flag == 1 {vPdeb=index($0,"<");vPfin=index($0,">"); varTo = varTo ";" substr($0,vPdeb+1,vPfin-vPdeb-1) ";";}
$1 == "To" {vPdeb=index($0,"<");vPfin=index($0,">"); varTo = substr($0,vPdeb+1,vPfin-vPdeb-1); flag=1;}
END {print varTo;}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
DATE_ENVOI=$(awk 'BEGIN {FS = ":"; varDate = ""; flag = 0; vPdeb=0; vPfin=0;}
$1 == "Date" {vPdeb=index($0,",")+1;vPfin=index($0,"+")-1; varDate = substr($0,vPdeb+1,vPfin-vPdeb-1);}
END {print sprintf("export DATE_ENVOI=\"%s\"",varDate);}' ${SAVAGE_HOME}/fichiers/SAV_AGENCE__91bc915d93b2803546aaf344ace9527cc9e3c06f5b7a1d2b19adeaf02893d01b.txt)
eval "$DATE_ENVOI"
echo "EXPEDITEUR=${EXPEDITEUR}"
echo "DESTINATAIRE=${DESTINATAIRE}"
echo "DATE_ENVOI=${DATE_ENVOI}"
et voici ce que je récupère :
EXPEDITEUR=pierre.dupont@gmail.fr
DESTINATAIRE=julien.martin@gmail.fr
DATE_ENVOI=16 Jun 2014 14:45:08
Le problème que je rencontre désormais est que j'aimerai intégrer ces résultats dans 3 variables VarFrom, VarTo, et VarDate.
J'ai essayé avec ce code mais ça ne fonctionne pas...
varFrom=$(EXPEDITEUR)
varTo=$(DESTINATAIRE)
varDate=$(DATE_ENVOI)
Merci d'avance pour votre aide