trier un fichier csv
Posté : 25 févr. 2020, 12:28
bonjour,
J'ai un fichier vcf qui a été récupéré de nexcloud que j'utilise sur mon serveur pour synchroniser entre autre les contacts avec mon téléphone mobile.
J'ai un téléphone gigaset C610ip avec des combinés.
Je peux mettre à jour les contacts de mes téléphones fixes via l'interface web du c610ip.
Je récupère mes contacts avec nexcloud (vcard). Je me retrouve avec un fichier vcf.
J'ai besoin de temps en temps de synchroniser les contacts du téléphone fixe avec ceux de nextcloud.
J'ai trouvé un premier programme php (https://github.com/thomascube/vcfconvert) qui transforme le fichier vcard en csv.
Je l'ai adapté à mes besoins.
Après pour pouvoir comparer les différents répertoires, j'ai fait un script bash qui a entre autre ces lignes pour trier le fichier :
# ecriture de la première ligne qui correspond à la ligne d'entête du fichier csv
head -n1 $fichier_depart > $fichier_retour
# ecriture des autres lignes dont la catégorie n'est pas vide
tail -n+2 $fichier_depart | grep '[A-Za-z0-9]$' | sort -t';' -k37 -k3 -k1 -k2 >> $fichier_retour
# ecriture des autres lignes dont la catégorie est vide
tail -n+2 $fichier_depart | grep '\;$' | sort -t';' -k37 -k3 -k1 -k2 >> $fichier_retour
K37 correspond à la catégorie (famille, amis, contact,...). La catégorie peut être vide.
K1 prénom
K2 nom
k3 nom complet (nom et prénom)
La ligne 'head' écrit la première ligne du fichier csv correspond à l'entête du fichier csv.
La première ligne 'tail' trie les lignes qui ont quelque chose dans catégorie.
La deuxième ligne 'tail' trie les lignes qui non rien dans catégorie.
Cela me permet d'avoir les contacts qui n'ont rien en dernier derrière ceux dont la catégorie n'est pas vide.
Je viens de voir qu'il y a des fonctions spécifiques pour les csv dans php.
Cela vous parait facile d'utiliser php pour faire ce que je fais en bash?
Je viens de tester la ligne de commande en bash pour tester des commandes php.
php mon_script.php avec au début du script #!/usr/bin/php
Vous utilisez souvent en ligne de commande du php?
Merci
Anne
J'ai un fichier vcf qui a été récupéré de nexcloud que j'utilise sur mon serveur pour synchroniser entre autre les contacts avec mon téléphone mobile.
J'ai un téléphone gigaset C610ip avec des combinés.
Je peux mettre à jour les contacts de mes téléphones fixes via l'interface web du c610ip.
Je récupère mes contacts avec nexcloud (vcard). Je me retrouve avec un fichier vcf.
J'ai besoin de temps en temps de synchroniser les contacts du téléphone fixe avec ceux de nextcloud.
J'ai trouvé un premier programme php (https://github.com/thomascube/vcfconvert) qui transforme le fichier vcard en csv.
Je l'ai adapté à mes besoins.
Après pour pouvoir comparer les différents répertoires, j'ai fait un script bash qui a entre autre ces lignes pour trier le fichier :
# ecriture de la première ligne qui correspond à la ligne d'entête du fichier csv
head -n1 $fichier_depart > $fichier_retour
# ecriture des autres lignes dont la catégorie n'est pas vide
tail -n+2 $fichier_depart | grep '[A-Za-z0-9]$' | sort -t';' -k37 -k3 -k1 -k2 >> $fichier_retour
# ecriture des autres lignes dont la catégorie est vide
tail -n+2 $fichier_depart | grep '\;$' | sort -t';' -k37 -k3 -k1 -k2 >> $fichier_retour
K37 correspond à la catégorie (famille, amis, contact,...). La catégorie peut être vide.
K1 prénom
K2 nom
k3 nom complet (nom et prénom)
La ligne 'head' écrit la première ligne du fichier csv correspond à l'entête du fichier csv.
La première ligne 'tail' trie les lignes qui ont quelque chose dans catégorie.
La deuxième ligne 'tail' trie les lignes qui non rien dans catégorie.
Cela me permet d'avoir les contacts qui n'ont rien en dernier derrière ceux dont la catégorie n'est pas vide.
Je viens de voir qu'il y a des fonctions spécifiques pour les csv dans php.
Cela vous parait facile d'utiliser php pour faire ce que je fais en bash?
Je viens de tester la ligne de commande en bash pour tester des commandes php.
php mon_script.php avec au début du script #!/usr/bin/php
Vous utilisez souvent en ligne de commande du php?
Merci
Anne