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

Attachment: signature.asc
Description: Digital signature

Répondre à