Bins=20 Nways=10 [ -n "$1" ] && Bins=$1 echo Bins prune() { cat req*csv | gawk 'BEGIN {FS=","; N=100000000} /^[ \t]$/ { next } { Rows++ } Rows==1 {Head=$0} Rows>1 {One[rand()]=$0} END {print Head; for(I in One) if (N--) {print One[I]} else {exit}}' > ~/tmp/a gawk -f efd.awk Bins=$1 Pass=1 ~/tmp/a Pass=2 ~/tmp/a | cut -d, -f 1,2,3,4,5,6,12 } headers() { head -1 req*csv | gawk -F, '{for(I=1;I<=NF;I++) print I " - " $I}' } prep() { rm [0-9]*.csv for bin in 2 3 4 5 6 7 8 9 do echo $bin prune $bin > $bin.csv grep '\#' $bin.csv > $bin.bins for((I=1;I<=7;I++)) do printf "\n\n---| $I |-------------\n\n" cat $bin.csv | grep -v '\#' | cut -d, -f $I | sort | uniq -c done | tee $bin.ranges done } learn() { for((n=1;n<=$Nways;n++)); do echo "bin=$1 n=$n " gawk -f nway.awk Seed="$RANDOM" $1.csv gawk -f nomo Goal="_$1" train | grep -v X | fgrep "|" | gawk '{print $2 "," $4}' > rule.$1 gawk -f test.awk Pass=1 test Pass=2 rule.$1 Pass=3 test > learn_$1_$n.log done paste learn_$1*.log } learns() { for i in 2 3 4 5 6 7 8 9 do learn $i done } #headers #prep learns | tee learned.log