Trier et séparer un fichier en plusieurs fichiers
Résolu
JsuisNul
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
JsuisNul Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
JsuisNul Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un fichier en entrée qui est constitué de la façon suivante :
AAAPPPPZZZZAAA
BBBCCCMMMZZZZ
AAABBBLLLZZZYY
CCCEEEMMMNNNI
BBBFFFEEEEAAAA
je souhaiterai obtenir le résultat suivant :
-Un fichier qui s'appelle TRAAA.txt contenant :
AAABBBLLLZZZYY
AAAPPPPZZZZAAA
-Un fichier qui s'appelle TRBBB.txt contenant :
BBBCCCMMMZZZZ
BBBFFFEEEEAAAAA
-Un fichier qui s'appelle TRCCC.txt contenant :
CCCEEEMMMNNNI
Il faut donc que les trois premiers caractères servant de clé de chaque enregistrement se retrouve dans le nom du fichier ou seront envoyés les enregistrements correspondant.
J'imagine qu'il serait mieux de trier le fichier en entrée mais pour la suite je ne sais pas comment faire.
merci d'avance.
J'ai un fichier en entrée qui est constitué de la façon suivante :
AAAPPPPZZZZAAA
BBBCCCMMMZZZZ
AAABBBLLLZZZYY
CCCEEEMMMNNNI
BBBFFFEEEEAAAA
je souhaiterai obtenir le résultat suivant :
-Un fichier qui s'appelle TRAAA.txt contenant :
AAABBBLLLZZZYY
AAAPPPPZZZZAAA
-Un fichier qui s'appelle TRBBB.txt contenant :
BBBCCCMMMZZZZ
BBBFFFEEEEAAAAA
-Un fichier qui s'appelle TRCCC.txt contenant :
CCCEEEMMMNNNI
Il faut donc que les trois premiers caractères servant de clé de chaque enregistrement se retrouve dans le nom du fichier ou seront envoyés les enregistrements correspondant.
J'imagine qu'il serait mieux de trier le fichier en entrée mais pour la suite je ne sais pas comment faire.
merci d'avance.
A voir également:
- Trier et séparer un fichier en plusieurs fichiers
- Fichier bin - Guide
- Fichier epub - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
hello
$ awk '{print $0 > "TR" substr($0, 1, 3) ".txt"}' fichier
$ ls TR*
TRAAA.txt TRBBB.txt TRCCC.txt
dubcek
Messages postés
18789
Date d'inscription
Statut
Contributeur
Dernière intervention
5 637
avec tri
Salut, vous avez essayé d'utiliser grep?
http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/
(il y a d'autres exemples, celui ci est juste le premier que j'ai trouvé).
Si votre fichier est un texte vous pouvez le manipuler comme vous voulez(et en créer autant que nécessaire) avec les commandes bash, et même mettre en mémoire(avec des variables) le contenu avant de l'utiliser pour créer un nouveau fichier.
La notion de pipe(|) peut aussi être utile dès qu'on veut diviser un résultat en plusieurs.
http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/
(il y a d'autres exemples, celui ci est juste le premier que j'ai trouvé).
Si votre fichier est un texte vous pouvez le manipuler comme vous voulez(et en créer autant que nécessaire) avec les commandes bash, et même mettre en mémoire(avec des variables) le contenu avant de l'utiliser pour créer un nouveau fichier.
La notion de pipe(|) peut aussi être utile dès qu'on veut diviser un résultat en plusieurs.
Vite fait (il y aurait plus efficace avec awk, mais ceci fonctionne)
EDIT: pour éviter l'utilisation d'un nouveau processus 'cut':
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
sort truc.txt | while read line; do echo $line >> TR$(echo $line | cut -b 1-3 ).txt ; done
EDIT: pour éviter l'utilisation d'un nouveau processus 'cut':
sort truc.txt | while read line; do echo $line >> TR${line:0:3}.txt ; done
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)