1.测试的文本内容awk1.tsql
- [root@demo ~]# cat awk1.t
- reed 100 90 100
- Reed 98 92 100
- huih 100 90 100
- deer 99 91 99
- hjl 92 100 80
- gsl 80 80 80
- zww 85 85 85
- swe 85 85 85
2.测试的脚本t.sh数组
- [root@demo ~]# cat t.sh
- #!/bin/awk -f
- # just for testing the awk
- # 15/11/2012
- # reed
- BEGIN{
- print "name\tChinese\tEnglish\tMath\tTotal"
- print "-------------------------------------"
- }
- {total=(($2+$3+$4))}
- {print $1"\t"$2"\t"$3"\t"$4"\t"total}
- {(C+=$2)(E+=$3)(M+=$4)(T+=(($2+$3+$4)))}
- END{
- print "-------------------------------------"
- print "Count\t"C"\t"E"\t"M"\t"T
- }
3.测试结果ide
- [root@demo ~]# ./t.sh awk1.t
- name Chinese English Math Total
- -------------------------------------
- reed 100 90 100 290
- Reed 98 92 100 290
- huih 100 90 100 290
- deer 99 91 99 289
- hjl 92 100 80 272
- gsl 80 80 80 240
- zww 85 85 85 255
- swe 85 85 85 255
- -------------------------------------
- Count 739 713 729 2181
4.测试结论函数
从此次实验当中本身学到了1)BEGIN/END的用法2)如何进行行的求和以及列求和3)打印格式控制测试
5.测试过程当中遇到的一些问题和疑问ui
- #!/bin/awk -f
- # just for testing the awk
- # 15/11/2012
- # reed
- BEGIN{
- print "name\tChinese\tEnglish\tMath\tTotal"
- print "-------------------------------------"
- }
- # 注意看这里,没有大括号
- total=(($2+$3+$4))
- {print $1"\t"$2"\t"$3"\t"$4"\t"total}
- {(C+=$2)(E+=$3)(M+=$4)(T+=(($2+$3+$4)))}
- END{
- print "-------------------------------------"
- print "Count\t"C"\t"E"\t"M"\t"T
- }
再看打印的结果spa
- [root@demo ~]# ./t.sh awk1.t
- name Chinese English Math Total
- -------------------------------------
- reed 100 90 100
- reed 100 90 100 290
- Reed 98 92 100
- Reed 98 92 100 290
- huih 100 90 100
- huih 100 90 100 290
- deer 99 91 99
- deer 99 91 99 289
- hjl 92 100 80
- hjl 92 100 80 272
- gsl 80 80 80
- gsl 80 80 80 240
- zww 85 85 85
- zww 85 85 85 255
- swe 85 85 85
- swe 85 85 85 255
- -------------------------------------
- Count 739 713 729 2181
疑问就存在这里了,为何定义变量的时候不加大括号就会再一次打印文本内容的呢,加了以后就不会的呢?在awk中{}表示什么意义呢?xml
网上终于找到相关资料了,我直接引用:
string
- 操做由一人或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。主要有四部份:
- 变量或数组赋值
- 输出命令
- 内置函数
- 控制流命令