Ajouter un nouveau champs a un fichier csv
Résolu
bendjiz
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
bendjiz Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
bendjiz Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous je suis nouveau sur ce site et j'aimerais vous soumettre un problème. Le problème est que je souhaite avec un script shell ajouter a un fichier csv un nouveau champs, je m'explique par un exemple: j'ai un fichier csv qui contient plusieurs champs et plusieur lignes comme celui ci
toto;titi;tata;...
dada; mimi;....
roro; riri; tomi;popo;...
Ce que j'essai de faire c'est de réccupérer la date de la derniere modification du fichier et l'ajouter au differentes lignes de mon fichier ce qui me donnera:
toto;titi;tata;...;23-01-1998
dada; mimi;....;23-01-1998
roro; riri; tomi;popo;...;23-01-1998
J'espere avoir expliqué clairement ma preoccupation, merci de m'aider .
toto;titi;tata;...
dada; mimi;....
roro; riri; tomi;popo;...
Ce que j'essai de faire c'est de réccupérer la date de la derniere modification du fichier et l'ajouter au differentes lignes de mon fichier ce qui me donnera:
toto;titi;tata;...;23-01-1998
dada; mimi;....;23-01-1998
roro; riri; tomi;popo;...;23-01-1998
J'espere avoir expliqué clairement ma preoccupation, merci de m'aider .
A voir également:
- Ajouter un nouveau champs a un fichier csv
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Ouvrir un fichier .dat - Guide
3 réponses
Salut,
;-))
jp@MDK:~/tmpfs ssh$ cat ben toto;titi;tata;... dada; mimi;.... roro; riri; tomi;popo;... jp@MDK:~/tmpfs ssh$ sed -i.bak 's/$/;23-01-1998/' ben jp@MDK:~/tmpfs ssh$ cat ben toto;titi;tata;...;23-01-1998 dada; mimi;....;23-01-1998 roro; riri; tomi;popo;...;23-01-1998 jp@MDK:~/tmpfs ssh$ cat ben.bak toto;titi;tata;... dada; mimi;.... roro; riri; tomi;popo;... jp@MDK:~/tmpfs ssh$
;-))
en bash, je sais pas (bien que ce doit être similaire), mais en Perl
Voilà, j'ai pas testé mais ça devrai le faire.
Si maintenant, c'est les toto ou rara qui représente les nom de fichiers que tu dois dater à leur dernière modif,
adapte en placant dans la boucle foreach la ligne
my $datefile = (stat($file))[9];
en dégageant $file par une reconnaissance de motif ou un split(/;/, $l)
#!/usr/bin/perl -w use strict; use warnings; my $file= "fichier.csv"; my $fout = "sortie_$file"; my $datefile = (stat($file))[9]; open F, "$file" or die "ouverture de $file impossible $!"; my @contenu = <F>; close F || die "Fermeture de $file impossible $!"; foreach $l(@contenu) { chomp $l; #$nl.= "$datefile\n"; $nl = "$l" . "$datefile\n"; push @nwcontenu, $nl; } open FOUT, ">$fout" or die "Ouverture de $fout impossible $!"; print FOUT @nwcontenu; close FOUT || die "Fermeture de $fout impossible $!"; END;
Voilà, j'ai pas testé mais ça devrai le faire.
Si maintenant, c'est les toto ou rara qui représente les nom de fichiers que tu dois dater à leur dernière modif,
adapte en placant dans la boucle foreach la ligne
my $datefile = (stat($file))[9];
en dégageant $file par une reconnaissance de motif ou un split(/;/, $l)
Salut,
Si je peux me permettre
Si je peux me permettre
#!/usr/bin/perl use strict; use warnings; my $file= "fichier.csv"; my $fout = "sortie_$file"; open F, "$file" or die "ouverture de $file impossible $!"; open FOUT, ">$fout" or die "Ouverture de $fout impossible $!"; my $datefile = (stat($file))[9]; my ($d,$m,$a)=(localtime($datefile))[3..5]; $m=sprintf("%02d",$m+1); $a+=1900; foreach my $l(<F>) { chomp $l; print FOUT "$l;$d-$m-$a\n"; } END;
mais quand j'utilise le sed -i je reçois une erreur ainsi libéllé: sed: illegal option --i . Aussi je souhaiterais que tu m'aides à savoir comment insérer la commande stat -c '%y' zac.csv qui me renvoie la date de la derniere modification du fichier zac.csv dans le script que tu m'a envoyé. Encore merci de m'aider
Quelle version de sed ?
Si l'option "-i" n'existe pas il faut rediriger la sortie vers un fichier temporaire et écraser l'original par la suite...
Édit :
:-))
Non ! Le forum est largement plus efficace qu'un individu tout seul ;-\