需求:大量的数据sql语句存放六个文件夹里面,需要从里计算出每一个文件的该状态为3的记录数,最后总结一下总的记录数。并且输入参数可以1到6个文件之间
数据格式 insert into xxx(x1,x2,x3.....) values(a1,a2,a3....)
# !bin/sh
echo "begin to count the installed number:"
echo "The argument number is : $#"
count=0
case $# in
1)
echo "execute 1 filename ,as list:$1"
awk -F "," 'BEGIN{count=0;} {if($29 ~/3/)count++;} END{print "filename:"FILENAME", installCount:",count}' $1
;;
2)
echo "execute 2 filenames ,as list:$1,$2"
awk -F "," 'BEGIN{c1=0;c2=0;print "filename\tinstalled"} NR==FNR{if($29 ~/3/)c1++;next;}{if($29 ~/3/)c2++;} END{printf("%s\t%s\n%s\t%s\n",ARGV[1],c1,ARGV[2],c2);total=c1+c2;print "total\t",total;}' $1 $2
;;
3)
echo "execute 3 filenames,as list:$1,$2,$3"
awk -F "," 'BEGIN{c1=0;c2=0;c3=0;print "filename\tinstalled"}
FILENAME==ARGV[1]{if($29 ~/3/)c1++}
FILENAME==ARGV[2]{if($29 ~/3/)c2++}
FILENAME==ARGV[3]{if($29 ~/3/)c3++}
END{printf("%s\t%s\n%s\t%s\n%s\t%s\n",ARGV[1],c1,ARGV[2],c2,ARGV[3],c3);total=c1+c2+c3;print "total\t",total;}' $1 $2 $3
;;
4)
echo "execute 4 filenames as list:$1,$2,$3,$4"
awk -F "," 'BEGIN{c1=0;c2=0;c3=0;c4=0;print "filename\tinstalled"}
FILENAME==ARGV[1]{if($29 ~/3/)c1++}
FILENAME==ARGV[2]{if($29 ~/3/)c2++}
FILENAME==ARGV[3]{if($29 ~/3/)c3++}
FILENAME==ARGV[4]{if($29 ~/3/)c4++}
END{printf("%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n",ARGV[1],c1,ARGV[2],c2,ARGV[3],c3,ARGV[4],c4);total=c1+c2+c3+c4;print "total\t",total;}' $1 $2 $3 $4
;;
5)
echo "execute 5 filenames list:$1,$2,$3,$4,$5"
awk -F "," 'BEGIN{c1=0;c2=0;c3=0;c4=0;c5=0;print "filename\tinstalled"}
FILENAME==ARGV[1]{if($29 ~/3/)c1++}
FILENAME==ARGV[2]{if($29 ~/3/)c2++}
FILENAME==ARGV[3]{if($29 ~/3/)c3++}
FILENAME==ARGV[4]{if($29 ~/3/)c4++}
FILENAME==ARGV[5]{if($29 ~/3/)c5++}
END{printf("%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n",ARGV[1],c1,ARGV[2],c2,ARGV[3],c3,ARGV[4],c4,ARGV[5],c5);total=c1+c2+c3+c4+c5;print "total\t",total;}' $1 $2 $3 $4 $5
;;
*)
echo "execute 6 filenames list:$1,$2,$3,$4,$5,$6"
awk -F "," 'BEGIN{c1=0;c2=0;c3=0;c4=0;c5=0;c6=0;print "filename\tinstalled"}
FILENAME==ARGV[1]{if($29 ~/3/)c1++}
FILENAME==ARGV[2]{if($29 ~/3/)c2++}
FILENAME==ARGV[3]{if($29 ~/3/)c3++}
FILENAME==ARGV[4]{if($29 ~/3/)c4++}
FILENAME==ARGV[5]{if($29 ~/3/)c5++}
FILENAME==ARGV[6]{if($29 ~/3/)c6++}
END{printf("%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n%s\t%s\n",ARGV[1],c1,ARGV[2],c2,ARGV[3],c3,ARGV[4],c4,ARGV[5],c5,ARGV[6],c6);total=c1+c2+c3+c4+c5+c6;print "total\t",total;}' $1 $2 $3 $4 $5 $6
;;
esac