François Boisson a écrit, vendredi 1 juin 2007, à 08:33 :
> [...] Le script suivant permet de récupérer le spam
> initial à partir du message de spamassassin:
> 
> #!/bin/sh
> BORNE=`grep boundary $1 | head -n 1 | sed -e s'/^.*----=\(.*\)"/\1/'`
> DEBUT=`grep -n $BORNE $1 | tail -n 2 | head -n 1 | sed -e 's/:.*$//'`
> FIN=`grep -n $BORNE $1 | tail -n 1 | sed -e 's/:.*$//'`
> LONGUEUR=$[$FIN-$DEBUT-6]
> tail -n +$[$DEBUT+6] $1 | head -n $LONGUEUR

On peut simplifier :

#!/bin/sh
BORNE="$(sed -ne '/boundary/{s/^.*="\([^"]*\)"/\1/p;q}' < "$1")"
sed -e "
    1,/^--${BORNE}$/d # efface le début,
    1,/^--${BORNE}$/d # le commentaire spamassassin,
    1,/^$/d # les 4 lignes Content-* et la ligne vide,
    /^--${BORNE}--$/,$ d # et la fin.
" < "$1"

(j'ai une variante à un seul sed, mais nettement plus lente).

Il  faudrait peut-être  améliorer l'adresse  /boundary/, ce  mot pouvant
apparaître avant dans les autres en-têtes.
-- 
Jacques L'helgoualc'h


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench   
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Répondre à