#1 Le 01/02/2021, à 15:48
- bierzo
Générer fichier csv en shell
Bonjour à tous !
J'ai une question pour générer un fichier csv.
J'ai un répertoire qui contient des fichiers pdf ainsi que des fichiers eml. J'envoie par mail via les fichiers eml, en pièce jointe les pdf. Une fois ces mails envoyés, je voudrais générer un fichier csv qui contiendrait ces colonnes la:
1) ID: Chaque ligne contient le nom du fichier pdf
2) Status: Ok ou NOK si l'envoie du mail à bien eu lieu
3) Date de reception des fichiers pdf
4) Date d'envoie des fichiers via le mail
Savez-vous comment je peux générer mon fichier csv dans mon script shell avec les 4 colonnes ?
Merci beaucoup
Hors ligne
#2 Le 01/02/2021, à 16:15
- erresse
Re : Générer fichier csv en shell
Bonjour,
Si c'est en vue de lire ton fichier csv dans un tableur comme Calc, par exemple, il te suffit de créer un fichier :
ID;Statut;Date de réception;Date d'envoi
truc;OK;12/01/21;15/01/21
...
Les séparateurs ";" vont générer les colonnes entre les données de manière automatique.
Par contre, si tu veux afficher ton fichier dans un éditeur de texte, plus basique, pourquoi vouloir faire un csv ? Il vaudrait mieux faire une mise en forme "en dur" dans le fichier et l'enregistrer tout formaté...
Dernière modification par erresse (Le 01/02/2021, à 16:18)
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#3 Le 01/02/2021, à 19:38
- kamaris
Re : Générer fichier csv en shell
Ces infos (ID, status, etc.) elles se trouvent dans les fichiers eml ?
Ta question c'est de savoir comment extraire ces infos des fichiers eml pour les mettre dans un csv ?
Hors ligne
#4 Le 02/02/2021, à 10:21
- bierzo
Re : Générer fichier csv en shell
Je préfère un csv, car par la suite je vais devoir l'utiliser dans un tableur directement. Et sur mon projet, c'est un des choix demandés.
Mais comment en shell, je peux générer ce csv ?
@kamaris, nan les infos ne sont pas le fichier eml.
Hors ligne
#5 Le 02/02/2021, à 11:58
- erresse
Re : Générer fichier csv en shell
Mais comment en shell, je peux générer ce csv ?
Comme je te l'ai montré, en écrivant les données séparées par un ";", c'est tout...
echo "" > fichier_csv
echo "$v1;$v2;$v3;$v4" >> fichier_csv
...
Le fichier "fichier_csv" produit pourra être ouvert directement dans un tableur qui saura le mettre en forme.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#6 Le 02/02/2021, à 12:58
- Watael
Re : Générer fichier csv en shell
echo "" > fichier_csv est superflu.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 02/02/2021, à 14:53
- erresse
Re : Générer fichier csv en shell
echo "" > fichier_csv est superflu.
Tu as raison, je sais bien que le fichier est créé s'il n'existe pas, même avec >>...
Mais donner juste la seconde ligne me semblait un peu trop simple.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#8 Le 02/02/2021, à 14:53
- bierzo
Re : Générer fichier csv en shell
bierzo a écrit :Mais comment en shell, je peux générer ce csv ?
Comme je te l'ai montré, en écrivant les données séparées par un ";", c'est tout...
echo "" > fichier_csv echo "$v1;$v2;$v3;$v4" >> fichier_csv ...
Le fichier "fichier_csv" produit pourra être ouvert directement dans un tableur qui saura le mettre en forme.
Ah oui exact. Et comment lui indiquer les noms de colonnes ? Car je souhaite avoir des noms de colonnes, et les variables serviront à indiquer le contenu des lignes.
Hors ligne
#9 Le 02/02/2021, à 15:08
- erresse
Re : Générer fichier csv en shell
echo "ID;Statut;Date de réception;Date d'envoi" >> fichier_csv
echo "truc;OK;12/01/21;15/01/21" >> fichier_csv
echo "$ID;$Stat;$Dat_rec;$Dat_env" >> fichier_csv
...
Pas plus compliqué que ça... Tu écris une première ligne contenant le titre des colonnes, tout simplement.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#10 Le 02/02/2021, à 15:21
- bierzo
Re : Générer fichier csv en shell
echo "ID;Statut;Date de réception;Date d'envoi" >> fichier_csv echo "truc;OK;12/01/21;15/01/21" >> fichier_csv echo "$ID;$Stat;$Dat_rec;$Dat_env" >> fichier_csv ...
Pas plus compliqué que ça... Tu écris une première ligne contenant le titre des colonnes, tout simplement.
Donc la première ligne, c'est le nom des colonnes, puis la deuxième ligne "echo "$ID;$Stat;$Dat_rec;$Dat_env" >> fichier_csv" contiendra es lignes c'est ça ?
Mais le fait de rediriger tout ça dans le même fichier, la deuxième ligne de code ne va pas écraser la première à savoir celle avec les noms de colonnes ?
Hors ligne
#11 Le 02/02/2021, à 16:01
- erresse
Re : Générer fichier csv en shell
C'est la base du fonctionnement de la redirection de la sortie standard "stdout" dans un fichier texte (normalement, la sortie se fait sur l'écran de la console (ou terminal).
- Redirection initiale, avec écrasement / création du fichier sortie (un caractère ">" unique) :
echo "texte_à_écrire" > fichier_sortie
- Redirection additionnelle, ajout dans le fichier sortie, avec création éventuelle si le fichier n'existe pas (deux caractères ">>") :
echo "texte suivant à ecrire" >> fichier_sortie
As-tu un peu essayé de lire de la documentation sur le shell bash et les règles de base des commandes ?
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#12 Le 02/02/2021, à 16:27
- MicP
Re : Générer fichier csv en shell
Mais ……Bretzel liquide !
Autant qu'il utilise une feuille de tableur pour saisir ses données
et qu'il sauvegarde ensuite sa feuille au format csv
Hors ligne
#13 Le 02/02/2021, à 17:05
- Watael
Re : Générer fichier csv en shell
echo "ID;Statut;Date de réception;Date d'envoi" >> fichier_csv
ah ben non, là :
echo "ID;Statut;Date de réception;Date d'envoi" >fichier_csv
à moins de vouloir retrouver des en-têtes au milieu du fichier.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 02/02/2021, à 20:44
- kamaris
Re : Générer fichier csv en shell
Mais ……Bretzel liquide !
Autant qu'il utilise une feuille de tableur pour saisir ses données
et qu'il sauvegarde ensuite sa feuille au format csv
Ben oui, d'où ma question plus haut : je ne vois pas trop non plus l'intérêt d'écrire un script s'il consiste essentiellement en des données saisies à la main et passées à echo.
Dernière modification par kamaris (Le 02/02/2021, à 20:44)
Hors ligne
#15 Le 02/02/2021, à 21:04
- Watael
Re : Générer fichier csv en shell
il y a au moins trois données qui peuvent être récupérées automatiquement pendant l'exécution du script.
par contre, la date de réception, ce sera dans ses rêves.
Dernière modification par Watael (Le 02/02/2021, à 21:04)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#16 Le 03/02/2021, à 09:14
- bierzo
Re : Générer fichier csv en shell
Je passe par un script pour générer mon csv car mon script ne fait pas uniquement que ça. Il fait des tas d'autres actions, et celle la en fait partie.
Ensuite, pour récupérer la date de réception, ne peut-on pas récupérer la date de création du fichier ? ça correspond à a même chose non ?
Hors ligne
#17 Le 03/02/2021, à 13:45
- Watael
Re : Générer fichier csv en shell
tu peux pas savoir, au moment de l'expédition, quand le destinataire ouvrira son lecteur de mail, et donc recevra le mail.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#18 Le 03/02/2021, à 13:57
- bierzo
Re : Générer fichier csv en shell
En fait le script est exécuté depuis le même serveur où se situent les fichiers. Donc pour ça que je disait de prendre la date de création.
Hors ligne
#19 Le 03/02/2021, à 15:09
- erresse
Re : Générer fichier csv en shell
tu peux pas savoir, au moment de l'expédition, quand le destinataire ouvrira son lecteur de mail, et donc recevra le mail.
Je pense que tu as mal compris : la date de réception n'est pas celle où le destinataire reçoit, mais celle où l'émetteur reçoit ce qu'il va envoyer ensuite.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#20 Le 03/02/2021, à 15:25
- Watael
Re : Générer fichier csv en shell
cette donnée n'est donc accessible qu'en interrogeant la machine sur laquelle "tourne" cet émetteur, ce qui, si on n'en est pas administrateur, ou utilisateur autorisé, n'est pas possible. Si ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#21 Le 03/02/2021, à 16:00
- erresse
Re : Générer fichier csv en shell
Là, je ne saurais répondre, j'ignore de quelle manière bierzo récupère les fichiers pdf qu'il veut ensuite envoyer par mail...
On peut toutefois supposer qu'il note comme date de réception, la date courante où il récupère son fichier, et comme date d'envoi celle où il l'expédie par mail au destinataire.
Cela dit, je pense qu'il a maintenant le moyen de produire un fichier log en format csv, ça ne doit pas poser de problème, et c'était bien le but de la demande.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#22 Le 03/02/2021, à 17:11
- Watael
Re : Générer fichier csv en shell
ahlala ! quiproquo ! j'ai lu sans réfléchir que Bierzo veux récupérer la date de réception après leur envoi.
je n'ai pas imaginé que les pdf pouvaient eux-mêmes avoir précédemment fait l'objet d'une réception.
donc, pas de problème : toutes les données peuvent être récupérées sur la machine locale.
NB: les données concernant les fichiers sont récupérées par stat; pas par ls !
Dernière modification par Watael (Le 03/02/2021, à 17:13)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#23 Le 22/02/2021, à 10:01
- bierzo
Re : Générer fichier csv en shell
Bonjour à vous !
Désolé de revenir tard, mais je vous remercie beaucoup pour vos réponses et votre aide
Hors ligne