Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Le Thursday 28 January 2010 00:35:21 Jeremie COURREGES-ANGLAS, vous avez écrit : Le jeudi 28 janvier 2010 à 12:01:53, christophe a écrit : Le Wednesday 27 January 2010 21:10:00 Jeremie COURREGES-ANGLAS, vous avez écrit : Le mercredi 27 janvier 2010 à 07:38:09, christophe a écrit : [...] Désolé donc de ne pas avoir passé plus de temps à la vérification de 10 lignes de code... cette version devrait te donner satisfaction. malheureusement j'ai une mauvaise nouvelle à t'annoncer : l'exécution du script aura vraisemblablement recopié le contenu du premier mail à la suite du dernier, dans le fichier de base ; ceci à cause du « echo $line $file_base$fileno » alors que fileno était vide. Comme quoi un oubli d'initialisation de variable peut être facheux... Le test [ $line != ] supprimera _toutes_ les lignes vides de _tous_ tes mails. Mes excuses pour le désagrément. Merci, pour tout. Voici ma version définitive qui m'a permis de d'obtenir autant de fichiers mbox qu'il y a de messages dans le fichier initial : #!/bin/bash [ $# -eq 0 ] printf Usage : $0 fichier [ autrefichier... ]\n 2 exit 1 fileno=1 for file_base in $@; do while read -r line; do # Peu importe le nombre exact de tirets autour de CUT HERE if [[ $line == *-- CUT HERE --* ]]; then csplit -z $file_base$fileno -f $file_base$fileno- /From:/+0 rm -f $file_base$fileno $file_base$fileno-00 fileno=$((fileno + 1)) continue fi if [ $line != ] [ $line != \n ]; then echo $line $file_base$fileno fi done $file_base csplit -z $file_base$fileno -f $file_base$fileno- /From:/+0 rm -f $file_base$fileno $file_base$fileno-00 done J'ai un peu tatonné et j'ai rajouté la suggestion de Alexandre. Merci à tous. -- christophe signature.asc Description: This is a digitally signed message part.
Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Le Thursday 28 January 2010 07:56:00 Alexandre, vous avez écrit : [...] à tester: csplit -zq TonFichierInitial.txt /From:/ {\*} Est-ce le résultat voulu ? -- Alexandre Delanoë Merci, fabuleux. Cette commande ne me donne pas vraiment ce que je voulais mais je l'ai adapté dans le script de Jeremie. En fait, cette commande découpe à chaque fois qu'il y a From: et cette expression rationnelle se retrouve parfois dans le corps du texte. Merci encore. -- christophe signature.asc Description: This is a digitally signed message part.
Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Le Thursday 28 January 2010 12:29:23 bernard.schoenac...@free.fr, vous avez écrit : [...] concernent votre soucis de fichier au format mbox le seul outil qui pourrait répondre : mboxgrep autrement, pourriez vous réinjecter les mail dans : cd /var/mail/ touch $yourmailbox chmod 600 $yourmailbox chown $user:8 $yourmailbox slt bernard Je n'ai pas essayé ça, désolé. -- christophe signature.asc Description: This is a digitally signed message part.
Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Le Thursday 28 January 2010 12:39:47 Edi Stojicevic, vous avez écrit : * bernard.schoenac...@free.fr bernard.schoenac...@free.fr [2010-01-28 12:29:23 +0100] wrote : Tu pourrais regarder le package mb2md qui te permet d'avoir une boite maildir avec pour chaque message un fichier ;) Pas trouvé le programme, désolé. -- christophe signature.asc Description: This is a digitally signed message part.
Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Le Wednesday 27 January 2010 21:10:00 Jeremie COURREGES-ANGLAS, vous avez écrit : Le mercredi 27 janvier 2010 à 07:38:09, christophe a écrit : [...] #!/bin/bash [ $# -eq 0 ] printf Usage : $0 fichier [ autrefichier... ]\n 2 exit 1 for file_base in $@; do while read -r line; do # Peu importe le nombre exact de tirets autour de CUT HERE if [[ $line == *-- CUT HERE --* ]]; then fileno=$((fileno + 1)) continue fi # Souhaite t'on supprimer les lignes vides ? si oui, décommenter #if [ -n $line ]; then echo $line $file_base$fileno #fi done $file_base done Merci, je viens juste de rentrer . Après avoir essayé : ça me donne bien autant de fichiers qu'il y a de messages après le premier. Seul le premier ne devient pas un fichier. Inverser les deux boucles à l'intérieur du while ? D'autre part, il faudrait juste que je supprime les deux retour à la ligne qui restent alors à chaque début de message. Décomment le if et le fi n'a pas suffi. Supprimer les \n ??? Merci encore. -- christophe signature.asc Description: This is a digitally signed message part.