Re: Extract last email from an email file (mbox format)
udi M <[email protected]> Mon, 30 May 2016 13:12:20 +0300
| Newsgroups | gmane.mail.procmail |
|---|---|
| Organization | tau |
| Message-ID | <[email protected]> |
On 29/05/16 23:11, Xu Wang wrote: > On Sun, May 29, 2016 at 5:35 AM, udi M <[email protected]> wrote: >> >> On 27/05/16 22:45, Xu Wang wrote: >>> On Fri, May 27, 2016 at 10:09 AM, Zhiliang Hu <[email protected]> wrote: >>>> On Thu, 26 May 2016, Xu Wang wrote: >>>> >>>>> Date: Thu, 26 May 2016 21:03:15 -0400 >>>>> From: Xu Wang <[email protected]> >>>>> Subject: Re: Extract last email from an email file (mbox format) >>>>> >>>>> Hello, this is.... >>>>> From: will this be matched? >>>>>> From how about this one? >>>>> ---------------------------------end last message >>>>> >>>>> So this is why I am not sure matching regex with "^From " is safe. It >>>>> will also match in the body. >>>> >>>> As a tradition, when a mail is saved into mbox format, any leading "From" >>>> line is prefixed with ">" as in your example. >>> I see, so mutt must not be using mbox format then because it does not do >>> that. >>> >>>> You could use 'H' or 'h' flag in your little rc file to check headers >>>> only. >>> What would be the full contents of little rc in this case? >> I do not know what Zhiliang means, but, I am afraid that you >> did not check my last suggestion: By using formail(1) + tee(1) >> you do not need any rc file ! >> >> Do only one simple command: >> >> formail -s tee oneMessageOnly < theBigBox >> >> >> 1. formail works only on the headers (was dsiged for) > Agreed. > >> 2. It will not create a big directory ! > Agreed. > >> 3. It is fast. > Unfortunately not for me. > > time formail -s tee oneMessageOnly < theBigBox > > real 0m24.019s > user 0m3.376s > sys 0m4.484s > > As mentioned, my file is huge: > $ wc -l theBigBox > 2171183 theBigBox > > And it will get huger. THe main thing though is I would like to > eventually make my script open source and help others and want to > allow them to have huge files as well. My testoffers compromise: TIMEFORMAT=%2R #> wc -l ./old-y06/toro/mail/mail-orig/sent-mail-mar-2006 4017303 ./old-y06/toro/mail/mail-orig/sent-mail-mar-2006 #> time formail -s tee xxx < ./old-y06/toro/mail/mail-orig/sent-mail-mar-2006 ...output... ...output... 70.50 #> time formail -s tee xxx < ./old-y06/toro/mail/mail-orig/sent-mail-mar-2006 >/dev/null 10.49 Running the tac(1) is much! faster! but, you the pipe call three jobs parallel but the last tac(1) (in the right side) must wait for the left jobs to finish, maybe needs more memory. As you mentioned it is dilemma, if the script supposed to run in background the time is less problematic - it is your choice. > > I would like use this in script and use it often so 24 seconds is too > much for me. > > Udi, thank you so much for your continued help and explanations. I > really appreciate your time! > > Kind regards, > > Xu > >> --udi