awk學習筆記之行求和和列求和

 1.測試的文本內容awk1.tsql

  
  
  
  
  1. [root@demo ~]# cat awk1.t  
  2. reed  100 90 100 
  3. Reed  98  92 100 
  4. huih  100 90 100 
  5. deer  99  91  99 
  6. hjl   92  100 80 
  7. gsl   80  80  80 
  8. zww   85  85  85 
  9. swe   85  85  85 

2.測試的腳本t.sh數組

  
  
  
  
  1. [root@demo ~]# cat t.sh  
  2. #!/bin/awk -f 
  3.   
  4. # just for testing the awk 
  5. # 15/11/2012 
  6. # reed 
  7.   
  8. BEGIN
  9.      print "name\tChinese\tEnglish\tMath\tTotal" 
  10.      print "-------------------------------------" 
  11. {total=(($2+$3+$4))} 
  12. {print $1"\t"$2"\t"$3"\t"$4"\t"total} 
  13.   
  14. {(C+=$2)(E+=$3)(M+=$4)(T+=(($2+$3+$4)))} 
  15.   
  16. END
  17.     print "-------------------------------------" 
  18.     print "Count\t"C"\t"E"\t"M"\t"

3.測試結果ide

  
  
  
  
  1. [root@demo ~]# ./t.sh awk1.t  
  2. name    Chinese English Math    Total 
  3. ------------------------------------- 
  4. reed    100     90      100     290 
  5. Reed    98      92      100     290 
  6. huih    100     90      100     290 
  7. deer    99      91      99      289 
  8. hjl     92      100     80      272 
  9. gsl     80      80      80      240 
  10. zww     85      85      85      255 
  11. swe     85      85      85      255 
  12. ------------------------------------- 
  13. Count   739     713     729     2181 

4.測試結論函數

從此次實驗當中本身學到了1)BEGIN/END的用法2)如何進行行的求和以及列求和3)打印格式控制測試

5.測試過程當中遇到的一些問題和疑問ui

  
  
  
  
  1. #!/bin/awk -f 
  2.   
  3. # just for testing the awk 
  4. # 15/11/2012 
  5. # reed 
  6.   
  7. BEGIN
  8.      print "name\tChinese\tEnglish\tMath\tTotal" 
  9.      print "-------------------------------------" 
  10. # 注意看這裏,沒有大括號  
  11. total=(($2+$3+$4))  
  12. {print $1"\t"$2"\t"$3"\t"$4"\t"total} 
  13.   
  14. {(C+=$2)(E+=$3)(M+=$4)(T+=(($2+$3+$4)))} 
  15.   
  16. END
  17.     print "-------------------------------------" 
  18.     print "Count\t"C"\t"E"\t"M"\t"

再看打印的結果spa

  
  
  
  
  1. [root@demo ~]# ./t.sh awk1.t  
  2. name    Chinese English Math    Total 
  3. ------------------------------------- 
  4. reed  100 90 100 
  5. reed    100     90      100     290 
  6. Reed  98  92 100 
  7. Reed    98      92      100     290 
  8. huih  100 90 100 
  9. huih    100     90      100     290 
  10. deer  99  91  99 
  11. deer    99      91      99      289 
  12. hjl   92  100 80 
  13. hjl     92      100     80      272 
  14. gsl   80  80  80 
  15. gsl     80      80      80      240 
  16. zww   85  85  85 
  17. zww     85      85      85      255 
  18. swe   85  85  85 
  19. swe     85      85      85      255 
  20. ------------------------------------- 
  21. Count   739     713     729     2181 

疑問就存在這裏了,爲何定義變量的時候不加大括號就會再一次打印文本內容的呢,加了以後就不會的呢?在awk中{}表示什麼意義呢?xml

網上終於找到相關資料了,我直接引用:
string

  
  
  
  
  1. 操做由一人或多個命令、函數、表達式組成,之間由換行符或分號隔開,並位於大括號內。主要有四部份: 
  2.  
  3. 變量或數組賦值 
  4.  
  5. 輸出命令 
  6.  
  7. 內置函數 
  8.  
  9. 控制流命令 
相關文章
相關標籤/搜索