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 : > > > [...]
#!/bin/bash [ $# -eq 0 ] && printf "Usage : $0 fichier [ autrefichier... ]\n" >&2 && exit 1 # initialisation oubliée 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 fileno=$((fileno + 1)) continue fi # version corrigée if [ "$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 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. -- "Free software, free society." Jérémie Courrèges-Anglas <kt...@wxcvbn.org> GPG key : 1D7E 79DA
signature.asc
Description: Digital signature