awk学習ノートの行と和列の和を求める


1.テストのテキスト内容awk 1.t
   
   
   
   
  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.テスト結果
   
   
   
   
  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.テスト中に発生した問題と疑問
   
   
   
   
  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"

印刷結果を見て
   
   
   
   
  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で{}は何の意味を表しますか?
ネット上でやっと関連資料を見つけました.私は直接引用します.
   
   
   
   
  1. 、 、 , , 。 : 
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.