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.
Découper un fichier texte en plusieurs fichiers en coupant à telle ligne
Bonjour la liste ! Après une brève recherche, je me tourne vers vous pour résoudre ce problème simple mais au dessus de mon faible niveau. J'ai de vieux mails stockés dans des fichiers textes. Ils sont recopiés les uns à la suite des autres et séparés par une ligne comme ça : CUT HERE Chaque mail est sous la forme : From: Bibi t...@machin.com Subject: blabla To: l...@parla.ici Date: Tue, 29 Apr 2003 22:26:37 +0100 textedemonmailsuperinterressant J'ai essayé de les importer avec mon mailer (kmail/kontact) mais sans succés : il ne reconnaît que le premier et les autres sont dans le corps de texte du premier email. J'ai en vain chercher un outil de manipulation de texte (éditeur, traitement de texte) qui puisse me couper tout ça en petits fichiers (un fichier par mail) importables par un mailer. Je suis sûr qu'il existe une solution simple et élégante que quelqu'un connaît. Merci. -- 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.