: 2D Sort my mail headers : figure out what file or files to scan if [ "$#" = 0 ] then m=${MAIL:-/usr/mail/$USER} elif [ "$#" = 1 ] then m="$1" else M="$@" fi if [ "$#" -le 1 ] then if [ -r $m ] then echo ------ $m `date` ------ fgrep 'From Subject' $m |sed 's/ */ /'|awk 'BEGIN{printed=1; message=0} /^From /{ if(printed!=1){printf("%3d|%s\n", message, subject);printed=1}; ++message; from=substr($0, 5, 20);printed=0; subject=""; } /^Subject: /{subject=substr($0,10); printed=0} END{if(printed!=1){printf("%3d|%s\n", message, subject); printed=1}}'| tr "A-Z" "a-z"| tr ':\"<>,.;{}\\+=)(*&^%$#@!~' " " | tr '][' ' ' | tr ' ' ' ' | sed 's/| *re */|/ s/ re */ /g s/| *attn */|/ s/| *attention */|/ s/ *(fwd) *$// s/ *fwd */ /g'| sed 's/|\([^|]*\)$/| \1 / s/ the / /g s/ a / /g s/ about / /g s/ an / /g s/ at / /g s/ go / /g s/ to / /g s/ do / /g s/ don.t / /g s/ does / /g s/ done / /g s/ of / /g s/ and / /g s/ or / /g s/ all / /g s/ every / /g s/ some / /g s/ for / /g s/ from / /g s/ nbsp / /g s/ new / /g s/ no / /g s/ not / /g s/ none / /g s/ come / /g s/ an / /g s/ in / /g s/ on / /g s/ is / /g s/ was / /g s/ you / /g s/ your / /g s/ you.re / /g s/ urgent / /g s/ priority / /g s/ */ /g s/| /|/ s/ $//'| sort -t\| -fb +1| # group awk -F\| 'BEGIN{old=""; subjectn=0;} { if(old!=$2) {subjectn++; old=$2; printf("\n%30s: %s", substr($2,0,30), $1); } else printf(" " $1); } END{ printf("\n"); }' else echo $m empty at `date` fi else for m in $M do h2 $option $m done fi