Newsgroups: fj.mail,fj.news.policy,fj.lang.awk
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!news.u-tokyo.ac.jp!sinetnews!wsclark!lab!kyu-cs!hakozaki.karrn!ie.u-ryukyu.ac.jp!yas
From: yas@ocean.ie.u-ryukyu.ac.jp (Yasushi Shinjo)
Subject: Questionnaire analysis tools (in awk and MH)
Message-ID: <YAS.94Oct4193501@aqua.ie.u-ryukyu.ac.jp>
Followup-To: fj.mail
Lines: 403
Sender: news@spn.ie.u-ryukyu.ac.jp (News System Admin)
Organization: Dept. of Elect. & Info. Eng., Univ. of the Ryukyus, Okinawa,
	Japan
Date: Tue, 4 Oct 1994 10:35:01 GMT
Xref: galaxy.trc.rwcp.or.jp fj.mail:2228 fj.news.policy:1745 fj.lang.awk:435
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.mail&nb=2228&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

$B?7>k!w>pJs!%N05eBg3X$G$9!#$3$s$K$A$O!#(B

vote@ocean.ie.u-ryukyu.ac.jp $B$G$*$J$8$_$N!"%K%e!<%9!&%0%k!<(B
$B%W4IM}0Q0w2q0Q0wA*5s$G;H$C$?%"%s%1!<%H2r@O%W%m%0%i%`!JEjI<2r(B
$B@O%W%m%0%i%`!K$r8x3+$7$^$9!#$b$7!"%P%0$J$I$,$"$j!"EjI<7k2L$K(B
$B1F6A$rM?$($k$N$G$O$J$$$+$H$$$&$3$H$,$"$j$^$7$?$i!";j5^O"Mm$7(B
$B$F$/$@$5$$!#(B

$B:#2s$O!"<+F02=$OA4A3$d$C$F$$$^$;$s!#IaDL$N%m%0%$%s$G$-$k%"%+(B
$B%&%s%H$r:n$j!"IaDL$K%a!<%k$r<u$1<h$k$h$&$K$7$^$7$?!#$=$7$F!"(B
$B$=$N%"%+%&%s%H$K%m%0%$%s$7$F!"<jF0$G2r@O%W%m%0%i%`$rAv$i$;$F(B
$B$$$^$9!#(B

$B$J$s$G<jF0$+$H$$$&$H!"%(%i!<$N07$$$r3Z$K$9$k$?$a$G$9!#<jF0$N(B
$B>l9g!"%(%i!<$,=P$F$-$?$i!"4JC1$KBP1~$9$k$3$H$,$G$-$^$9!#$=$N(B
$B%(%i!<$N860x$rD4$Y$F!"2r@O%W%m%0%i%`<+?H$NLdBj$,$"$k$H!"$=$N(B
$B>l$G$=$l$r=$@5$7$^$9!#<B:]!"#3=54V$N4V$K!"2?EY$+=$@5$7$^$7$?!#(B
$B%G!<%?$KLdBj$,$"$j!"=$I|2DG=$J$b$N$O!"%G!<%?$NJ}$r=$I|$7$^$9!#(B
$B=$I|IT2DG=$J$b$N$O!"$=$N%a!<%k$r<h$j=|$-$^$9!#(B

$B2r@O%W%m%0%i%`$O!"(BMH $B$N5!G=$r;H$C$F$$$^$9!#<u$1<h$C$?EjI<$N(B
$B%a!<%k$O!"(BMH $B$N5!G=$r;H$C$F!"#18D#18DIaDL$N%U%!%$%k$K$P$i$7(B
$B$F$$$^$9!#$P$i$P$i$K$J$C$?%a!<%k%X%C%@$N2r@O$K$b!"(BMH $B$r;H$C(B
$B$F$$$^$9!#%a!<%k$NF|IU$d(B From: $B9T$N2r@O!"(BMessage-ID: $B$NH4$-(B
$B=P$7$K$O!"(BMH $B$N(B scan $B%3%^%s%I$r;H$C$F$$$^$9!#K\BN$N2r@O$K$O!"(B
awk $B$r;H$C$F$$$^$9!#JV;v$N08@h$O!"(BMH $B$N(B scan $B$r;H$C$F@8@.$7(B
$B$F$$$^$9!#$7$+$7!"Aw$k$N$O!"(B/usr/lib/sendmail $B$rD>@\8F$S=P$7(B
$B$F$$$^$9!#(B

$B2r@O$O!"#2%Q%9$G$9!#%Q%9#1$G$O!"#18D#18D$N%a!<%k$r2r@O$7$F!"(B
$B%G!<%?%Y!<%9$r:n$j$^$9!#%Q%9#2$G$O!"%G!<%?%Y!<%9$r8!:w$7$F!"(B
$BE}7W$r$H$C$?$j(B From: $B$rH4$-=P$7$?$j$7$^$9!#(B

$B%Q%9#1$N%3%^%s%I$O!"<!$N$h$&$K$J$C$F$$$^$9!#(B

bin/db-make$B%G!<%?%Y!<%9$r:n$k!J(Bmail-mh-analyze, 
mail-mh-reply $B$r8F$S=P$7$F$$$k!#!K(B
bin/folder-check$B%a!<%k$NFbMF$r%A%'%C%/$9$k(B
$B!J(Bmail-mh-analyze $B$r8F$S=P$7$F$$$k!#!K(B
bin/mail-mh-analyze$B2r@O%W%m%0%i%`$NCf?4ItJ,(B
bin/mail-mh-reply$B<u$1<h$j3NG'$r=P$9(B
lib/reply-header$B<u$1<h$j3NG'$N%X%C%@$r:n$k7?;f(B

$B$3$NCf$G!"(Bbin/mail-mh-analyze $B$,Cf?4E*$JLr3d$r2L$?$7$F$$$^$9!#(B
$B9)IW$7$?$N$O!"(BFrom: $B9T$N%G!<%?%Y!<%9$X$NEPO?$NItJ,$G$9!#(B
From: $B$NCf$K!"!V(B"$B!W!V(B'$B!W$J$I$,F~$C$F$$$k$H!"$1$C$3$&?I$$$G$9!#(B

$B%G!<%?%Y!<%9$X$NLd$$9g$o$;$K$O!"<!$N$h$&$J$b$N$,$"$j$^$9!#(B

bin/db-count$B:G=*7k2L$N=87W!#(B
bin/db-date-graph$BF|IU$4$H$NEjI<<T?t$r?t$($k!J%0%i%U$K(B
$B$7$h$&$H;W$C$?$1$I!"$=$3$^$G:n$C$F$$$J$$!K(B
bin/db-dup-check$B=EJ#$r%A%'%C%/$9$k!#(B
bin/db-fromFrom: $B9T$rH4$-=P$9!#(B

$B$3$s$J$H$3$m$G$9!#(B

$B!V$3$s$J$N$GF0$$$F$$$?$N$+!W$H$S$C$/$j$J$5$C$??M$b$$$k$+$b$7(B
$B$l$^$;$s!#$b$C$H$^$H$b$JEjI<2r@O%D!<%k!"%"%s%1!<%H%D!<%k$,$"(B
$B$j$^$7$?$i!"65$($F$/$@$5$$!#(B

$B!@!@!!?7>k!!Lw!!!J$7$s$8$g$&!!$d$9$7!K!!!@!@(B
$B!@!@!!N05eBg3X!!>pJs9)3X!!!!!!!!!!!!!!!!!@!@(B

$B0J2<$N4A;z$,4^$^$l$F$$$k%7%'%k!&%9%/%j%W%H$G$O$O!"4A;z%3!<%I(B
$B$H$7$F(B EUC $B$r;H$C$F$$$^$9!##J#I#S$r;H$&$H!"(BESC $ $B$N(B $ $B$G!"%7%'(B
$B%k!&JQ?t$H$7$F0z$C$+$+$C$?$j$9$k$+$i$G$9!#(Bawk $B$H$7$F$$$m$$$m(B
$B$J$b$N$,:.$8$C$F$$$^$9$,!"$J$<:.$8$C$F$$$k$N$+M}M3$rK:$l$^$7(B
$B$?!#(B
----------------------------------------------------------------------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#"End of shell archive."
# Contents:  bin/db-count bin/db-date-graph bin/db-dup-check
#   bin/db-from bin/db-make bin/folder-check bin/mail-mh-analyze
#   bin/mail-mh-reply lib/reply-header
# Wrapped by vote@ocean on Tue Oct  4 18:41:15 1994
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'bin/db-count' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/db-count'\"
else
echo shar: Extracting \"'bin/db-count'\" \(1157 characters\)
sed "s/^X//" >'bin/db-count' <<'END_OF_FILE'
X#!/bin/sh
X
Xdb=$HOME/db/master
X
XIFS='
X
X'
Xfor i in `
Xcat <<EOF
X[archives]  $B5HEDLP<y(Bshige@iis.u-tokyo.ac.jp
X[comp]      $BCf@n42<#(Bkanjy@sharp.co.jp
X[misc]      $BNkLZM5?.(Bhironobu@sra.co.jp
X[net]       $BFAED>;98(Btokuda@jaist.ac.jp
X[rec]       $B>.J}0lO:(Bogata@etl.go.jp
X[sci]       $BBl@n2mL&(Blogic@mtak.bsj.com
X[soc]       $B5WLnLw!!(Bkuno@gssm.otsuka.tsukuba.ac.jp
XEOF`
Xdo
XIFS=' 
X'
Xset $i
Xfield="$1"
Xkname="$2"
Xaddr="$3"
X
Xawk -F: '
XBEGIN { yes=0; no=0; }
X$2 == "'$addr'" && $3 == "yes" { yes++; next }
X$2 == "'$addr'" && $3 == "no"  { no++; next }
XEND {
Xprintf("%-12s %-30s yes==%d no===%d\n", \
X"'$field'","'$addr'", yes, no );
X}
X' $db |
Xsed-e "/shige@iis.u-tokyo.ac.jp/s//$B5HEDLP<y(B&/" \
X-e "/kanjy@sharp.co.jp/s//$BCf@n42<#(B&/" \
X-e "/hironobu@sra.co.jp/s//$BNkLZM5?.(B&/" \
X-e "/tokuda@jaist.ac.jp/s//$BFAED>;98(B&/" \
X-e "/ogata@etl.go.jp/s//$B>.J}0lO:(B&/" \
X-e "/logic@mtak.bsj.com/s//$BBl@n2mL&(B&/" \
X-e "/kuno@gssm.otsuka.tsukuba.ac.jp/s//$B5WLnLw!!(B&/" |
Xnkf
X
X
Xdone |
Xnkf
X
X
Xexit
X
Xprintf("-12%s %-8s %-30s yes==%d no===%d\n",
X"f","k","a", yes, no );
X
Xexit
X
Xprintf("-12%s %-8s %-30s yes==%d no===%d\n",
X"'$field'","'$kname'","'$addr'", yes, no );
X
END_OF_FILE
chmod +x 'bin/db-count'
# end of 'bin/db-count'
fi
if test -f 'bin/db-date-graph' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/db-date-graph'\"
else
echo shar: Extracting \"'bin/db-date-graph'\" \(204 characters\)
sed "s/^X//" >'bin/db-date-graph' <<'END_OF_FILE'
X#!/bin/sh
X
Xawk -F: '{print $4,$5 }' $HOME/db/master | uniq |
Xawk '{print $1 }' | sort | uniq -c |
Xawk '{printf("%s %3d\n",$2,$1); s+=$1 }END{ printf("%9d\n",s);}' |
Xsed -e 's;1994/0; ;' -e 's;1994/1;1;'
X
END_OF_FILE
chmod +x 'bin/db-date-graph'
# end of 'bin/db-date-graph'
fi
if test -f 'bin/db-dup-check' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/db-dup-check'\"
else
echo shar: Extracting \"'bin/db-dup-check'\" \(168 characters\)
sed "s/^X//" >'bin/db-dup-check' <<'END_OF_FILE'
X#!/bin/sh
X
Xawk -F: '{printf("%s:%s\n",$5,$6); }' $HOME/db/master | uniq |
Xawk -F: '{print $2 }' | sort | uniq -c |
Xawk '$1 != 1 {print}'
X
Xexit
X
X|
Xawk '$1 != 1 {print}'
END_OF_FILE
chmod +x 'bin/db-dup-check'
# end of 'bin/db-dup-check'
fi
if test -f 'bin/db-from' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/db-from'\"
else
echo shar: Extracting \"'bin/db-from'\" \(75 characters\)
sed "s/^X//" >'bin/db-from' <<'END_OF_FILE'
X#!/bin/sh
X
Xdb=$HOME/db/master
X
Xawk -F: '{print $6 }' $db |
Xuniq | sort -f
X
END_OF_FILE
chmod +x 'bin/db-from'
# end of 'bin/db-from'
fi
if test -f 'bin/db-make' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/db-make'\"
else
echo shar: Extracting \"'bin/db-make'\" \(356 characters\)
sed "s/^X//" >'bin/db-make' <<'END_OF_FILE'
X#!/bin/sh
X
XPATH=$HOME/bin:$PATH
Xexport PATH
Xfolder +vote
X
Xcd $HOME/Mail/vote
Xfor i in `
X(ls [0-9]; ls [0-9][0-9]; ls [0-9][0-9][0-9]; ls [0-9][0-9][0-9][0-9]) 2>/dev/null
X`
Xdo
X    echo $i ... > /dev/tty
X    mail-mh-analyze $i > $HOME/db/to-add
X    mail-mh-reply   $i   $HOME/db/to-add
X    cat $HOME/db/to-add  >> $HOME/db/master
Xdone
X
Xrefile all +analyzed
END_OF_FILE
chmod +x 'bin/db-make'
# end of 'bin/db-make'
fi
if test -f 'bin/folder-check' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/folder-check'\"
else
echo shar: Extracting \"'bin/folder-check'\" \(301 characters\)
sed "s/^X//" >'bin/folder-check' <<'END_OF_FILE'
X#!/bin/sh
X
Xfolder=$folder
X
XPATH=$HOME/bin:$PATH
Xexport PATH
X
Xrm $HOME/tmp/folder-check-result
X
Xfolder
Xcd `mhpath`
Xfor i in `
X(ls [0-9]; ls [0-9][0-9]; ls [0-9][0-9][0-9]; ls [0-9][0-9][0-9][0-9]) 2>/dev/null
X`
Xdo
X    echo $i ... > /dev/tty
X    mail-mh-analyze $i >> $HOME/tmp/folder-check-result
Xdone
END_OF_FILE
chmod +x 'bin/folder-check'
# end of 'bin/folder-check'
fi
if test -f 'bin/mail-mh-analyze' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/mail-mh-analyze'\"
else
echo shar: Extracting \"'bin/mail-mh-analyze'\" \(1122 characters\)
sed "s/^X//" >'bin/mail-mh-analyze' <<'END_OF_FILE'
X#!/bin/sh
X
Xi=$1
X
Xh=`scan -width 300 -format "\
X%(year{date})/%02(mon{date})/%02(mday{date}):\
X%{message-id}:\
X%{from}" $i`
X
X#echo $h
X#exit
X
Xnawk '
XBEGIN {
Xi = 0 ;
Xid[i++] = "archives" ;
Xid[i++] = "comp" ;
Xid[i++] = "misc" ;
Xid[i++] = "net" ;
Xid[i++] = "rec" ;
Xid[i++] = "sci" ;
Xid[i++] = "soc" ;
Xnid = i ;
Xvote = 0 ;
X}
X/\[[a-z\.]*\][ \t]*.*[ \t]*[a-z.@]*[ \t*][a-z]*/{
Xans = "unknown" ;
Xfor( i=NF ; i>=1 ; i-- )
X{
X    if( $i == "yes" || $i == "yes/" )
X    {
Xans = "yes" ;
Xvote ++ ;
Xbreak;
X    }
X    if( $i == "no" )
X    {
Xans = "no" ;
Xvote ++ ;
Xbreak;
X    }
X}
Xif( i == 0 )
X{
X    printf("no ans, %d:%s\n",NR,$0 ) > "/dev/tty";
X    next ;
X}
Xi-- ;addr = $i ;
Xi-- ;
Xi-- ;sid = $i ;
X
Xsid = substr(sid,index(sid,"["));
Xprintf("%s:%s:%s:\n",sid,addr,ans );
X}
X/^From.*[Pp]ostmaster/ {
Xprintf("From postmaster:%s\n",FILENAME ) > "/dev/tty";
Xexit;
X}
X/^From.*[Dd][Aa][Ee][Mm][Oo][Nn]/ {
Xprintf("From daemon:%s\n",FILENAME ) > "/dev/tty";
Xexit;
X}
XEND {
Xif( vote == 0 )
X{
X    printf("This is not vote:%s\n",FILENAME ) > "/dev/tty";
X}
X}
X' `mhpath $i` | sort -u |
Xsed -e s';$;'"$h"';'
END_OF_FILE
chmod +x 'bin/mail-mh-analyze'
# end of 'bin/mail-mh-analyze'
fi
if test -f 'bin/mail-mh-reply' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bin/mail-mh-reply'\"
else
echo shar: Extracting \"'bin/mail-mh-reply'\" \(862 characters\)
sed "s/^X//" >'bin/mail-mh-reply' <<'END_OF_FILE'
X#!/bin/sh
X
Xi=$1
Xfile=$2
X(
Xscan -width 1000 -form $HOME/lib/reply-header $i
X
Xnkf <<EOF
X
Xfj$B%K%e!<%9!&%0%k!<%W4IM}0Q0w2qA*5s$K$*$$$FEjI<$7$F$$$?$@$-$"(B
X$B$j$,$H$&$4$6$$$^$7$?!#$"$J$?$NEjI<$O!"2r@O%W%m%0%i%`$K$h$j<!(B
X$B$N$h$&$KH=Dj$5$l$^$7$?!#(B
X
XEOF
X
Xnawk -F: '
X{
Xprintf("%-12s\t%-30s\t%s\n",$1,$2,$3 );
X}
X' $file |
Xsed-e "/shige@iis.u-tokyo.ac.jp/s//$B5HEDLP<y(B&/" \
X-e "/kanjy@sharp.co.jp/s//$BCf@n42<#(B&/" \
X-e "/hironobu@sra.co.jp/s//$BNkLZM5?.(B&/" \
X-e "/tokuda@jaist.ac.jp/s//$BFAED>;98(B&/" \
X-e "/ogata@etl.go.jp/s//$B>.J}0lO:(B&/" \
X-e "/logic@mtak.bsj.com/s//$BBl@n2mL&(B&/" \
X-e "/kuno@gssm.otsuka.tsukuba.ac.jp/s//$B5WLnLw!!(B&/" |
Xnkf
X
Xnkf <<EOF
X
X$BEjI<$K4X$9$k$*Ld$$9g$o$;$O!"(Bvote-admin@ocean.ie.u-ryukyu.ac.jp $B$^$G$*(B
X$B4j$$$7$^$9!#(B
X
X----
Xfj$B%K%e!<%9!&%0%k!<%W4IM}0Q0w2qA*5s(B
X$BA*5s4IM}0Q0w2q!?EjI<2r@O%W%m%0%i%`(B
XEOF
X) > $HOME/tmp/draft
X
X/usr/lib/sendmail -t < $HOME/tmp/draft
END_OF_FILE
chmod +x 'bin/mail-mh-reply'
# end of 'bin/mail-mh-reply'
fi
if test -f 'lib/reply-header' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib/reply-header'\"
else
echo shar: Extracting \"'lib/reply-header'\" \(481 characters\)
sed "s/^X//" >'lib/reply-header' <<'END_OF_FILE'
XReturn-Path: vote-admin@ocean.ie.u-ryukyu.ac.jp
XErrors-To: vote-admin@ocean.ie.u-ryukyu.ac.jp
XReply-To: vote-admin@ocean.ie.u-ryukyu.ac.jp
XFrom: vote@ocean.ie.u-ryukyu.ac.jp (fj NGMC Ballot Box)
X%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\
X%<(nonnull)%(void(width))%(putaddr To: )\n%>\
X%<{date}In-reply-to: Your message of "\
X%<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
X             %{message-id}%>\n%>\
XSubject: Acknowledgment for your vote
END_OF_FILE
# end of 'lib/reply-header'
fi
echo shar: End of shell archive.
exit 0
