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
- 操做由一人或多個命令、函數、表達式組成,之間由換行符或分號隔開,並位於大括號內。主要有四部份:
- 變量或數組賦值
- 輸出命令
- 內置函數
- 控制流命令