Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

regrouper des fichiers plats puis éclater un fichier

1 view
Skip to first unread message

jajah

unread,
Jun 14, 2022, 5:54:20 AM6/14/22
to
Bonjour,
Je me permets de vous écrire pour solliciter votre aide et ne sachant pas si un
script Perl ou Python serait le mieux "adapté/simple" (voir même du VB!)
Mon besoin est le suivant :
I - Phase 1 : génération d'un fichier à envoyer
1- parcourir un répertoire spécifique et lister les fichiers plats qu'il
contient (csv ou txt) et qui ont tous la même structure (11 champs séparés par
des points virgules)
2- concaténer/regrouper ces fichiers en un seul et lui donner un nom de type
ABC-123
II- Phase 2 : découper un fichier reçu
1- découper un fichier (3 champs) en plusieurs fichiers selon un critère à
savoir le dernier champ (exp ABCDE1234)
2- enregistrer les fichiers générés avec un nom contenant le critère de
découpage (toto_ABC-123.csv) dans un répertoire spécifique

En vous remerciant par avance pour vos aides
Bien à vous

Marc SCHAEFER

unread,
Jun 14, 2022, 6:17:51 AM6/14/22
to
jajah <nospam_elm...@gmail.com.invalid> wrote:
> contient (csv ou txt) et qui ont tous la même structure (11 champs séparés par
> des points virgules)
> 2- concaténer/regrouper ces fichiers en un seul et lui donner un nom de type
> ABC-123

un simple cat du shell bash pourrait-il suffire?

cat > ABC-123 $(find . -name '*.csv'; find . -name '*.txt)

ou si par répertoire:

for i in *
do
cat > $(basename $i)-ABC-123 $(find . -name '*.csv'; find . -name '*.txt)
done

Bash est désormais même disponible sous Microsoft (Git bash p.ex.).

> II- Phase 2 : découper un fichier reçu
> 1- découper un fichier (3 champs) en plusieurs fichiers selon un critère à
> savoir le dernier champ (exp ABCDE1234)

Là par contre, effectivement, Perl semble une bonne idée.

Stephane Tougard

unread,
Jun 14, 2022, 7:38:08 AM6/14/22
to
Je suis pas bien sur de comprendre la question. N'importe quel langage
informatique peut faire une tache aussi simple.

jajah

unread,
Jun 14, 2022, 10:03:49 AM6/14/22
to
Le mardi 14 Juin 2022 à 13:38 par Stephane Tougard :
> On 2022-06-14, jajah
>> Bonjour,
>> Je me permets de vous écrire pour solliciter votre aide et ne sachant
>> pas si un
>> script Perl ou Python serait le mieux "adapté/simple" (voir
>> même du VB!)
>> Mon besoin est le suivant :
>> I - Phase 1 : génération d'un fichier Í  envoyer
>> 1- parcourir un répertoire spécifique et lister les fichiers
>> plats qu'il
>> contient (csv ou txt) et qui ont tous la même structure (11 champs
>> séparés par
>> des points virgules)
>> 2- concaténer/regrouper ces fichiers en un seul et lui donner un nom de
>> type
>> ABC-123
>> II- Phase 2 : découper un fichier reçu
>> 1- découper un fichier (3 champs) en plusieurs fichiers selon un
>> critère Í 
>> savoir le dernier champ (exp ABCDE1234)
>> 2- enregistrer les fichiers générés avec un nom contenant
>> le critère de
>> découpage (toto_ABC-123.csv) dans un répertoire
>> spécifique
>>
>> En vous remerciant par avance pour vos aides
>> Bien Í  vous
>>
>>
> Je suis pas bien sur de comprendre la question. N'importe quel langage
> informatique peut faire une tache aussi simple.
Bonjour,
J'ai de notions avancées dans vb mais loin d'être bon, j'ai réalisé une autre
partie avec quelques difficultés mais je ne sais pas par quel bout attaquer ce
besoin complémentaire (relativement urgent et nous n'avons pas de développeurs,
je m'improvise!)...
Je pensais qu'un script perl serait plus facile!

jajah

unread,
Jun 14, 2022, 10:06:17 AM6/14/22
to
Le mardi 14 Juin 2022 à 12:17 par Marc SCHAEFER :
> jajah
>> contient (csv ou txt) et qui ont tous la même structure (11 champs
>> séparés par
>> des points virgules)
>> 2- concaténer/regrouper ces fichiers en un seul et lui donner un nom de
>> type
>> ABC-123
>>
>>
> un simple cat du shell bash pourrait-il suffire?
>
> cat > ABC-123 $(find . -name '*.csv'; find . -name '*.txt)
>
> ou si par répertoire:
>
> for i in *
> do
> cat > $(basename $i)-ABC-123 $(find . -name '*.csv'; find . -name '*.txt)
> done
>
> Bash est désormais même disponible sous Microsoft (Git bash
> p.ex.).
>
>> II- Phase 2 : découper un fichier reçu
>> 1- découper un fichier (3 champs) en plusieurs fichiers selon un
>> critère Í 
>> savoir le dernier champ (exp ABCDE1234)
>>
>>
> LÍ  par contre, effectivement, Perl semble une bonne idée.
Bonjour,
Tout d'abord merci pour cette réponse.
Effectivement, c'est simple et efficace pour traiter de cette partie I, merci

jajah

unread,
Jun 14, 2022, 10:09:52 AM6/14/22
to
Le mardi 14 Juin 2022 à 12:17 par Marc SCHAEFER :
> jajah
>> contient (csv ou txt) et qui ont tous la même structure (11 champs
>> séparés par
>> des points virgules)
>> 2- concaténer/regrouper ces fichiers en un seul et lui donner un nom de
>> type
>> ABC-123
>>
>>
> un simple cat du shell bash pourrait-il suffire?
>
> cat > ABC-123 $(find . -name '*.csv'; find . -name '*.txt)
>
> ou si par répertoire:
>
> for i in *
> do
> cat > $(basename $i)-ABC-123 $(find . -name '*.csv'; find . -name '*.txt)
> done
>
> Bash est désormais même disponible sous Microsoft (Git bash
> p.ex.).
>
>> II- Phase 2 : découper un fichier reçu
>> 1- découper un fichier (3 champs) en plusieurs fichiers selon un
>> critère Í 
>> savoir le dernier champ (exp ABCDE1234)
>>
>>
> LÍ  par contre, effectivement, Perl semble une bonne idée.
Bonjour,
Merci pour cette réponse rapide.
Effectivement, c'est simple et efficace pour répondre au besoin de la partie I,
merci

jajah

unread,
Jun 20, 2022, 4:01:26 PM6/20/22
to
Le mardi 14 Juin 2022 à 11:54 par jajah :
Bonjour,
J'avais répondu à deux reprises mais celles-ci n'apparaissent pas!
Effectivement, une simple commande dos résous une grande partie de la phase 1
mais j'ai un entête que j'aimerai garder uniquement depuis le premier fichier
mais le supprimer sur les autres. une solutions svp?
Pour la partie 2; auriez-vous une solution svp?
Je souhaite :
1- découper un fichier (3 champs) en plusieurs fichiers selon un critère à
savoir le dernier champ (exp ABC-123, ABC-456)
2- enregistrer les fichiers générés avec un nom contenant le critère de
découpage (toto_ABC-123.csv, toto_ABC-456) dans un répertoire spécifique.
Merci par avance pour votre aide

Marc SCHAEFER

unread,
Jun 20, 2022, 4:09:51 PM6/20/22
to
jajah <nospam_elm...@gmail.com.invalid> wrote:
> mais j'ai un entête que j'aimerai garder uniquement depuis le premier fichier
> mais le supprimer sur les autres. une solutions svp?

# supprimer la première ligne
tail +2 fichier

donc, quelque chose comme

(cat fichier1 # celui dont on veut maintenir l'entête
tail +2 fichier2 # celui non) > fichier

> Pour la partie 2; auriez-vous une solution svp?

Pour cela il faudra un peu de code: un tableau associatif nom => handle
de fichier notamment.
0 new messages