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 <[email protected]>
GPG key : 1D7E 79DA
signature.asc
Description: Digital signature

