#!/bin/bash #use strict; # huh, toto nie je Perl?! a jak mam potom hekovat bez Perlu, ha? :) # mail2file.sh - bash-ovsky script pouzivajuci Perl # # $Id: mail2file.sh,v 1.3 2002/02/12 00:34:26 jombik9 Exp $ # # Skript ocakava na vstupe e-mailovu spravu a ulozi ju do suboru, ktory # bude mat tvar 'YY-MM-DD.[hh:mm:ss]'. Teda napriklad: 01-01-27.[22:21:30] # Nazov suboru (datum) sa nastavuje podla hlavicky 'Date:' e-mailovej spravy. # # Optimalne pouzitie je s programom formail: # cat mailbox | formail -s ./mail2file.sh # Po tomto budete mat v aktualnom adresari za kazdy jeden e-mail z mailbox-u # jeden subor, ktoreho obsahom bude prave ten mail a nazov bude zodpovedat # sekcii 'Date:' toho e-mailu. # # (c) 2001-2002 Ondrej Jombik # Especially dedicated to my love, Yuyanka. :) # # Updates: # 29/01/2001 - initial release # 03/02/2002 - import to CVS # Prefix for temporary filename(s). tmpfname="tmp-mail2file-X"; ############################################################################## # Creating the unique filename for temporaring storage. while [ -e $tmpfname ]; do tmpfname=$tmpfname"x"; done; # Writing everythig to temporary file. tee $tmpfname > /dev/null; newfname=`cat $tmpfname | egrep '^Date: .+' | \ perl -e ' \ while () { \ s/^Date:([ ].+,|)[ ](\d+)[ ]([^ ]+)[ ](\d+)[ ](\d+):(\d+):(\d+)[ ].*$/\ $4-$3-0$2.[$5:$6:$7]/; \ s/^[ \t]*\d*(\d\d[-][^ ]+[-])\d*(\d\d\..+)$/$1$2/; \ s/^(\d+)-Jan-(.+)$/$1-01-$2/; \ s/^(\d+)-Feb-(.+)$/$1-02-$2/; \ s/^(\d+)-Mar-(.+)$/$1-03-$2/; \ s/^(\d+)-Apr-(.+)$/$1-04-$2/; \ s/^(\d+)-May-(.+)$/$1-05-$2/; \ s/^(\d+)-Jun-(.+)$/$1-06-$2/; \ s/^(\d+)-Jul-(.+)$/$1-07-$2/; \ s/^(\d+)-Aug-(.+)$/$1-08-$2/; \ s/^(\d+)-Sep-(.+)$/$1-09-$2/; \ s/^(\d+)-Oct-(.+)$/$1-10-$2/; \ s/^(\d+)-Nov-(.+)$/$1-11-$2/; \ s/^(\d+)-Dec-(.+)$/$1-12-$2/; \ if ($_ ne "") { \ print $_; \ last; \ } \ } \ while() { } \ '`; if [ -z $newfname ]; then echo "WARNING: No 'Date:' section found. Leaving mail in temporary file."; else while [ -e $newfname ]; do newfname=$newfname"x"; done; echo "Creating '$newfname'."; mv $tmpfname $newfname; fi