procmail
[Top] [All Lists]

Re: subject cleaning

1999-05-18 07:06:08
On 17 May 1999, Tony Lam <Tony(_dot_)Lam+procmail(_at_)Eng(_dot_)Sun(_dot_)Com> 
wrote:

I'd like to do some subject cleaning with procmail so that:

 Subject:  [Fwd: Re: misc stuff]              => Re: misc stuff (fwd)
 Subject:  Re: [Fwd: Re: misc stuff] (fwd)    => Re: misc stuff (fwd)
 Subject:  [Fwd: [Fwd: Re: [ace-users] misc stuff] ]  => Re: [ace-users] misc 
stuff (fwd)

I have the following recipe that only handles the first case:
[...]
I need help to get it work with case 2 and 3? Note the [Fwd: .* ] can
be multi-level nested. It doesn't look easy for me.

    It isn't.  As usual, the problem is there's no way to tell procmail
to stop adding characters to $MATCH when it hits a certain pattern.
That's why your best bet is to do the whole thing with sed:

:0
* ^Subject:[    ]+\/.*\[Fwd:.*
{
  subj = `echo $MATCH | sed \
        -e 's/^\(\(\[Fwd\|Re\):[        ]*\)*/Re: /' \
        -e 's/\(\][     ]*\|[   ]*(fwd)\)*$/ (fwd)/'`

  :0 fwh
  | formail -I "Subject: $subj"
}

    Basically, the first command replaces the leading "[Fwd:" and "Re:"
by a single "Re: ", and the second one replaces the trailing "]" and
"(fwd)" by a single " (fwd)".  No attempt is made to count the "[" and
match them to the right.

    Regards,

    Liviu Daia

-- 
Dr. Liviu Daia               e-mail:   Liviu(_dot_)Daia(_at_)imar(_dot_)ro
Institute of Mathematics     web page: http://www.imar.ro/~daia
of the Romanian Academy      PGP key:  http://www.imar.ro/~daia/daia.asc

<Prev in Thread] Current Thread [Next in Thread>