BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: dfbb (ÕÔÎÞ¼É), ÐÅÇø: Linux 
±ê  Ìâ: [ÊÖ²á]gawk Ê¹ÓÃÊÖ²á 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Tue Nov 11 15:19:09 1997) 
±ê  Ìâ: ¡ó gawk ÊÖ²á 
 
Ö÷ Ìâ: gawk.doc 
 
                   GAWK 
 
µÚÒ»Õ    Ç°ÑÔ 
µÚ¶þÕ    ¼ò½é 
µÚÈýÕ    ¶ÁÈ¡ÊäÈëµµ°¸ 
µÚËÄÕ    Ó¡³ö 
µÚÎåÕ    Patterns 
µÚÁùÕ    Ëãʽ(Expression)×÷ΪActionsµÄÐðÊö 
µÚÆßÕ    ActionsÀïÃæµÄ¿ØÖÆÐðÊö 
µÚ°ËÕ    ÄÚ½¨º¯Ê½(Built-in Functions) 
µÚ¾ÅÕ    Ê¹ÓÃÕß¶¨ÒåµÄº¯Ê½ 
µÚʮՠ   ¡õÀý 
µÚʮһÕ  ½áÂÛ 
 
 
 
£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½ 
 
µÚÒ»Õ  Ç°ÑÔ 
 
    awk ÊÇÒ»¸ö³ÌʽÓïÑÔ£¬¶Ôì¶×ÊÁϵĴ¦Àí¾ßÓкÜÇ¿µÄ¹¦ÄÜ¡£¶Ôì¶ÎÄ 
×ÖµµÀïµÄ×ÊÁÏ×öÐ޸ġ¢±È¶Ô¡¢³éÈ¡µÈµÄ´¦Àí£¬awk Äܹ»ÒԺ̵ܶijÌʽ 
ÇáÒ×µØÍê³É¡£Èç¹ûʹÓàC »ò Pascal µÈÓïÑÔд³ÌʽÍê³ÉÉÏÊöµÄ¶¯×÷£¬ 
»á²»·½±ãÇҺܻ¨·Ñʱ¼ä£¬ËùдµÄ³ÌʽҲ»áºÜ´ó¡£ 
 
    awk Äܹ»ÒÀÕÕʹÓÃÕߵ͍Òå¸ñʽÀ´·Ö½âÊäÈë×ÊÁÏ£¬Ò²¿ÉÒÀÕÕʹÓà
Õß¶¨ÒåµÄ¸ñʽÀ´Ó¡³ö×ÊÁÏ¡£ 
 
    awk Ãû³ÆµÄÓÉÀ´ÊÇÓÉËüµÄԭʼÉè¼ÆÕßµÄÐÕÊÏÖ®µÚÒ»¸ö×Öĸ¶øÃüÃû 
£ºAlfred V. Aho, Peter J. Weinberger, Brian W. Kernighan¡£ 
awk×î³õÔÚ1977ÄêÍê³É¡£Ò»¸öа汾µÄawkÔÚ1985Äê±»·¢±í£¬ËüµÄ¹¦ÄÜ 
±È¾É°æ±¾ÔöÇ¿²»ÉÙ¡£ 
 
    gawk ÊÇGNUËù×öµÄ awk£¬gawk ×î³õÔÚ1986ÄêÍê³É£¬Ö®áá²»¶ÏµØ 
±»¸Ä½ø¡¢¸üС£gawk °üº¬ awk µÄËùÓй¦ÄÜ¡£ 
 
    ÍùááµÄ gawk ½«ÒÔÏÂÃæµÄ2¸öÊäÈëµµ°¸À´×öÀý×Ó˵Ã÷¡£ 
 
µµ°¸'BBS-list'£º 
aardvark     555-5553     1200/300           B 
alpo-net     555-3412     2400/1200/300      A 
barfly       555-7685     1200/300           A 
bites        555-1675     2400/1200/300      A 
camelot      555-0542     300                C 
core         555-2912     1200/300           C 
fooey        555-1234     2400/1200/300      B 
foot         555-6699     1200/300           B 
macfoo       555-6480     1200/300           A 
sdace        555-3430     2400/1200/300      A 
sabafoo      555-2127     1200/300           C 
 
 
µµ°¸'shipped'£º 
Jan  13  25  15 115 
Feb  15  32  24 226 
Mar  15  24  34 228 
Apr  31  52  63 420 
May  16  34  29 208 
Jun  31  42  75 492 
Jul  24  34  67 436 
Aug  15  34  47 316 
Sep  13  55  37 277 
Oct  29  54  68 525 
Nov  20  87  82 577 
Dec  17  35  61 401 
 
Jan  21  36  64 620 
Feb  26  58  80 652 
Mar  24  75  70 495 
Apr  21  70  74 514 
 
 
 
µÚ¶þÕ  ¼ò½é 
 
    gawk µÄÖ÷Òª¹¦ÄÜÊÇÕë¶Ôµµ°¸µÄÿһÐÐ(line)ËÑѰָ¶¨µÄ patterns 
¡£µ±Ò»ÐÐÀïÓзûºÏÖ¸¶¨µÄ patterns£¬gawk ¾Í»áÔÚ´ËÒ»ÐÐÖ´Ðб»Ö¸¶¨ 
µÄ actions¡£ gawk ÒÀ´Ë·½Ê½´¦ÀíÊäÈëµµ°¸µÄÿһÐÐÖ±µ½ÊäÈëµµ°¸½á 
Êø¡£ 
 
    gawk ³ÌʽÊÇÓɺܶàµÄ pattern Óë action Ëù×é³É£¬action Ð´ÔÚ 
´óÀ¨ºÅ { } ÀïÃæ£¬Ò»¸öpatternááÃæ¾Í¸úÖøÒ»¸öaction¡£Õû¸ö gawk ³Ì 
ʽ»áÏñÏÂÃæµÄÑù×Ó£º 
 
            pattern      {action} 
            pattern      {action} 
 
    ÔÚ gawk ³ÌʽÀïÃæµÄ¹æÔò£¬pattern »ò action Äܹ»±»Ê¡ÂÔ£¬µ« 
ÊÇÁ½¸ö²»ÄÜͬʱ±»Ê¡ÂÔ¡£Èç¹û pattern ±»Ê¡ÂÔ£¬¶Ôì¶ÊäÈëµµÀïÃæµÄ 
ÿһÐУ¬action ¶¼»á±»Ö´ÐС£Èç¹û action ±»Ê¡ÂÔ£¬ÄÚ¶¨µÄ action 
Ôò»áÓ¡³öËùÓзûºÏ pattern µÄÊäÈëÐС£ 
 
 
 
  2.1 ÈçºÎÖ´ÐÐgawk³Ìʽ 
 
    »ù±¾ÉÏ£¬ÓÐ2¸ö·½·¨¿ÉÒÔÖ´ÐÐgawk³Ìʽ¡£ 
 
    ¡õÈç¹û gawk ³ÌʽºÜ¶Ì£¬Ôò gawk ¿ÉÒÔÖ±½ÓдÔÚ command line£¬ÈçÏÂËùʾ£º 
 
          gawk 'program' input-file1 input-file2 ... 
 
      ÆäÖРprogram °üÀ¨Ò»Ð© pattern ºÍ action¡£ 
 
    ¡õÈç¹û gawk ³Ìʽ½Ï³¤£¬½ÏΪ·½±ãµÄ×ö·¨Êǽ« gawk ³Ìʽ´æÔÚÒ»¸öµµ°¸£¬ 
      ¼´ patterns Óë actions Ð´ÔÚµµÃûΪ program-file µÄµµ°¸ÀïÃæ£¬Ö´ÐР
      gawk µÄ¸ñʽÈçÏÂËùʾ£º 
 
          gawk -f program-file input-file1 input-file2 ... 
 
      gawk ³ÌʽµÄµµ°¸²»Ö¹Ò»¸öʱ£¬Ö´ÐÐgawk µÄ¸ñʽÈçÏÂËùʾ£º 
 
          gawk -f program-file1 -f program-file2 ... input-file1 
               input-file2 ... 
 
 
 
  2.2 Ò»¸ö¼òµ¥µÄÀý×Ó 
 
    ÏÖÔÚÎÒÃǾÙÒ»¸ö¼òµ¥µÄÀý×Ó£¬ÒòΪ gawk ³ÌʽºÜ¶Ì£¬ËùÒÔ½« gawk ³Ì 
ʽֱ½ÓдÔÚ command line¡£ 
 
    gawk '/foo/ {print $0}' BBS-list 
 
ʵ¼ÊµÄ gawk ³ÌʽΪ /foo/ {print $0}¡£/foo/ Îª pattern£¬Òâ˼ΪËÑ 
ѰÊäÈëµµÀïµÄÿһÐÐÊÇ·ñº¬ÓÐ×Ó×Ö´® 'foo'£¬Èç¹ûº¬ÓР'foo' ÔòÖ´ÐРaction¡£ 
action Îª print $0£¬Êǽ«ÏÖÔÚÕâÒ»ÐеÄÄÚÈÝÓ¡³ö¡£BBS-list ÊÇÊäÈëµÄµµ°¸¡£ 
 
    Ö´ÐÐÍêÉÏÊöÖ¸Áîáᣬ»áÓ¡³öÏÂÃæµÄ½á¹û£º 
fooey        555-1234     2400/1200/300      B 
foot         555-6699     1200/300           B 
macfoo       555-6480     1200/300           A 
sabafoo      555-2127     1200/300           C 
 
 
 
  2.3 Ò»¸ö½Ï¸´ÔÓµÄÀý×Ó 
 
        gawk '$1 == "Feb" {sum=$2+$3}  END {print sum}'  shipped 
 
    ÏÖÔÚÕâ¸öÀý×ӻὫÊäÈëµµ 'shipped' µÄµÚÒ»¸öÀ¸Î»Óë "Feb" ×ö±È½Ï 
£¬Èç¹ûÏàµÈ£¬ÔòÆä¶ÔÓ¦µÄµÚ2À¸Î»ÓëµÚ3À¸Î»µÄÖµ»á±»¼Óµ½±äÊý sum¡£ 
¶Ôì¶ÊäÈëµµµÄÿһÐÐÖØ¸´ÉÏÊöµÄ¶¯×÷£¬Ö±µ½ÊäÈëµµµÄÿһÐж¼±»´¦Àí 
¹ýΪֹ¡£×îáὫ sum µÄÖµÓ¡³ö¡£END {print sum} µÄÒâ˼ΪÔÚËùÓеÄÊä 
Èë¶ÁÍêÖ®áᣬִÐÐÒ»´Î print sum µÄ¶¯×÷£¬Ò²¾ÍÊǰѠsum µÄÖµÓ¡³ö¡£ 
 
    ÏÂÃæÊÇÖ´ÐеĽá¹û£º 
84 
 
                                                             
µÚÈýÕ  ¶ÁÈ¡ÊäÈëµµ°¸                                           
                                                                 
    gawkµÄÊäÈë¿ÉÒÔ´Ó±ê×¼ÊäÈë»òÖ¸¶¨µÄµµ°¸Àï¶ÁÈ¡¡£ÊäÈëµÄ¶ÁÈ¡µ¥       
λ±»³ÆÎª¡±¼Ç¼¡±(records)£¬gawk ÔÚ×ö´¦Àíʱ£¬ÊÇÒ»¸ö¼Ç¼һ¸ö¼Ç                                                                    (p9 of 46) 
¼µØ´¦Àí¡£Ã¿¸ö¼Ç¼µÄÄÚ¶¨ÖµÊÇÒ»ÐÐ(line)£¬Ò»¸ö¼Ç¼ÓÖ±»·ÖΪ¶à¸ö   
À¸Î»(fields)¡£                                                                 
                                                                  
                                                                        
                                                                 
  3.1 ÈçºÎ½«ÊäÈë·Ö½â³É¼Ç¼(records)                              
                                                               
    gawk ÓïÑÔ»á°ÑÊäÈë·Ö½â³É¼Ç¼(record)¡£¼Ç¼Óë¼Ç¼֮¼äÊÇÒÔ            
record separator ¸ô¿ª£¬record separator µÄÄÚ¶¨ÖµÊDZíʾÐÂÒ»ÐеĠ 
×ÖÔª(newline character)£¬Òò´ËÄÚ¶¨µÄ record separator Ê¹µÃÎÄ×Ö             
µÄÿһÐÐÊÇÒ»¸ö¼Ç¼¡£                                                   
                                                                      
    record separator ËæÖøÄÚ½¨±äÊý RS µÄ¸Ä±ä¶ø¸Ä±ä¡£RS ÊÇÒ»¸ö×Ö´®£¬ 
ËüµÄÄÚ¶¨ÖµÊÇ"\n"¡£½öÓРRS µÄµÚÒ»¸ö×ÖÔªÊÇÓÐЧµÄ£¬Ëü±»µ±×÷ record 
separator£¬¶ø RS µÄÆäËü×ÖÔª»á±»ºöÂÔ¡£                        
                                                             
    ÄÚ½¨±äÊý FNR »á´¢´æÄ¿Ç°µÄÊäÈëµµ°¸ÒѾ±»¶ÁÈ¡µÄ¼Ç¼֮¸öÊý¡£Ä  
½¨±äÊý NR »á´¢´æÄ¿Ç°ÎªÖ¹ËùÓеÄÊäÈëµµ°¸ÒѾ±»¶ÁÈ¡µÄ¼Ç¼֮¸öÊý¡     
                                                              
  3.2 À¸Î»(field)                                                              
                                                                  
    gawk »á×Ô¶¯½«Ã¿¸ö¼Ç¼·Ö½â³É¶à¸öÀ¸Î» (field)¡£ÀàËÆì¶×ÖÔÚÒ»           
ÐÐÀïÃæ£¬gawk µÄÄÚ¶¨¶¯×÷»áÈÏΪÀ¸Î»Ö®¼äÊÇÒÔ whitespace ·Ö¿ª¡£ÔÚ    
gawk Àwhitespace µÄÒâ˼ÊÇÒ»¸ö»ò¶à¸ö¿Õ°×»ò tabs¡£              
                                                               
    ÔÚ gawk ³ÌʽÀïÃæ£¬ÒÔ'$1'±íʾµÚÒ»¸öÀ¸Î»£¬'$2'±íʾµÚ¶þ¸öÀ¸Î»         
£¬ÒÀ´ËÀàÍÆ¡£¾Ù¸öÀý×Ó£¬¼ÙÉèÊäÈëµÄÒ»ÐÐÈçÏÂËùʾ£º                  
                                                                          
        This seems like a pretty nice example.                         
                                                                      
µÚÒ»¸öÀ¸Î»»ò $1 ÊÇ'This'£¬µÚ¶þ¸öÀ¸Î»»ò $2 ÊÇ 'seems'£¬ÒÀ´ËÀàÍÆ¡£   
ÓиöµØ·½ÖµµÃÌØ±ð×¢Ò⣬µÚÆß¸öÀ¸Î»»ò $7 ÊÇ'example.'¶ø·Ç'example'¡£ 
                                                             
    ²»ÂÛÓжàÉÙÀ¸Î»£¬$NF ¿ÉÓÃÀ´±íʾһ¸ö¼Ç¼µÄ×îááÒ»¸öÀ¸Î»¡£ÒÔ 
ÉÏÃæµÄÀý×ÓΪÀý£¬$NF Óë $7 Ïàͬ£¬Ò²¾ÍÊÇ'example.'¡£             
                                                                 
    NF ÊÇÒ»¸öÄÚ½¨±äÊý£¬ËüµÄÖµ±íʾĿǰÕâ¸ö¼Ç¼֮À¸Î»µÄ¸öÊý¡£  $0£¬¿´ÆðÀ´ºÃÏñÊǵÚÁã¸öÀ¸Î»£¬ËüÊÇÒ»¸öÌØÀý£¬Ëü±íʾÕû¸ö¼Ç¼¡£ 
                                                                               
    ÏÂÃæÊÇÒ»¸ö½Ï¸´ÔÓµÄÀý×Ó£º                                      
                                                                        
        gawk '$1~/foo/ {print $0}' BBS-list                      
                                                                 
    ½á¹ûÈçÏ£º                                                 
fooey        555-1234     2400/1200/300      B                         
foot         555-6699     1200/300           B                  
macfoo       555-6480     1200/300           A                            
sabafoo      555-2127     1200/300           C                         
                                                                      
Õâ¸öÀý×ÓÊǰÑÊäÈëµµ'BBS-list'µÄÿ¸ö¼Ç¼µÄµÚÒ»¸öÀ¸Î»×÷¼ì²é£¬Èç       
¹ûËüº¬ÓÐ×Ó×Ö´®'foo'£¬ÔòÕâÒ»¸ö¼Ç¼»á±»Ó¡³ö¡£                       
                                                             
                                                             
                                                               
  3.3 ÈçºÎ½«¼Ç¼·Ö½â³ÉÀ¸Î»                                       
                                                                   
    gawk ¸ù¾Ý field separator ½«Ò»¸ö¼Ç¼·Ö½â³ÉÀ¸Î»¡£field sepa- rator ÒÔÄÚ½¨±äÊý FS ±íʾ¡£                                     
                                                                               
    ¾Ù¸öÀý×Ó£¬¼ÙÈç field separator ÊÇ'oo'£¬ÔòÏÂÃæµÄÐУº           
                                                                        
        moo goo gai pan                                          
                                                                 
»á±»·Ö³ÉÈý¸öÀ¸Î»£º'm'¡¢' g'¡¢' gai pan'¡£                      
                                                                       
    ÔÚ gawk ³ÌʽÀ¿ÉÒÔʹÓÃ'='À´¸Ä±ä FS µÄÖµ¡£ÀýÈç:            
                                                                          
        gawk 'BEGIN {FS=","}; {print $2}'                              
                                                                      
ÊäÈëÐÐÈçÏ£º                                                       
                                                                  
        John Q. Smith, 29 Oak St., Walamazoo, MI 42139       
                                                             
Ö´ÐÐgawkµÄ½á¹û½«Ó¡³ö×Ö´® ' 29 Oak St.'¡£BEGIN ááÃæµÄ action »áÔÚ 
µÚÒ»¸ö¼Ç¼±»¶Áȡ֮ǰִÐÐÒ»´Î¡£                                                                                      
µÚËÄÕ  Ó¡³ö                                                                   
                                                                  
    ÔÚgawk³ÌʽÀactions ×î³£×öµÄʾÍÊÇÓ¡³ö(printing)¡£¼òµ¥            
µÄÓ¡³ö£¬Ê¹ÓàprinteÐðÊö¡£¸´ÔÓ¸ñʽµÄÓ¡³ö£¬Ê¹Óàprintf ÐðÊö¡£      
                                                                 
                                                               
                                                                       
  4.1 printÐðÊö                                                 
                                                                          
    print ÐðÊöÓÃÔÚ¼òµ¥¡¢±ê×¼µÄÊä³ö¸ñʽ¡£ÐðÊöµÄ¸ñʽÈçÏÂËùʾ£º           
                                                                      
        print item1, item2, ...                                    
                                                                  
Êä³öʱ£¬¸÷¸ö item Ö®¼ä»áÒÔÒ»¸ö¿Õ°×·Ö¿ª£¬×îáá»á»»ÐÐ(newline)¡£ 
                                                             
    Èç¹û 'print'ÐðÊöÖ®ááûÓиúÖøÈκζ«Î÷£¬ËüÓë'print $0'µÄЧ     
¹ûÒ»Ñù£¬Ëü»áÓ¡³öÏÖÔڵļǼ(record)¡£ÒªÓ¡³ö¿Õ°×ÐпÉʹÓÃ'print     
""'¡£ Ó¡³öÒ»¶Î¹Ì¶¨µÄÎÄ×Ö£¬¿ÉÓÃË«ÒýºÅ½«ÎÄ×ÖµÄÁ½±ßÀ¨ÆðÀ´£¬ÀýÈç       
'print "Hello there"'¡£                          
 ÕâÀïÊÇÒ»¸öÀý×Ó£¬Ëü»á°Ñÿ¸öÊäÈë¼Ç¼µÄǰ¶þ¸öÀ¸Î»Ó¡³ö£º                       
                                                                  
        gawk '{print $1,$2}' shipped                                    
                                                                 
    ½á¹ûÈçÏÂËùʾ£º                                               
Jan 13                                                         
Feb 15                                                                 
Mar 15                                                          
Apr 31                                                                    
May 16                                                                 
Jun 31                                                                
Jul 24                                                             
Aug 15                                                            
Sep 13                                                        
Oct 29                                                       
Nov 20                                                           
Dec 17                                                           
                                               
Feb 26                                                         
Mar 24                                                                         
Apr 21                                                            
                                                                        
                                                                 
                                                                 
  4.2 Output Separators                                        
                                                                       
    Ç°ÃæÎÒÃÇÒÑÌá¹ýÈç¹û print ÐðÊö°üº¬Óжà¸ö item£¬item Ö®¼ä     
Óöºµã·Ö¿ª£¬ÔòÓ¡³öʱ¸÷¸öitem»á±»Ò»¸ö¿Õ°×¸ô¿ª¡£ÄãÄܹ»Ê¹ÓÃÈκΠ             
µÄ×Ö´®×÷Ϊ output field separator£¬¿ÉÒÔ¾ÓÉÄÚ½¨±äÊý OFS µÄÉè            
¶¨À´¸ü¸Ä output field separator¡£OFS µÄ³õʼֵΪ" "£¬¼´Ò»¸ñµÄ          
¿Õ°×¡£                                                             
                                                                  
    Õû¸ö print ÐðÊöµÄÊä³ö±»³ÆÎª output record¡£print ÐðÊöÊä   
³ö output record Ö®áᣬ»á½ÓÖøÊä³öÒ»¸ö×Ö´®£¬´Ë×Ö´®³ÆÎª output 
record separator¡£ÄÚ½¨±äÊý ORS ÓÃÀ´Ö¸Ã÷´Ë×Ö´®¡£ORS µÄ³õʼֵ      
Ϊ "\n"£¬Ò²¾ÍÊÇ»»ÐС£                                            
                                                                   
    ÏÂÃæÕâ¸öÀý×Ó»áÓ¡³öÿ¸ö¼Ç¼µÄµÚÒ»¸öÀ¸Î»ºÍµÚ¶þ¸öÀ¸Î»£¬´Ë¶þ   
                                                                   (p16 of 46) 
¸öÀ¸Î»Ö®¼äÒÔ·ÖºÅ';'·Ö¿ª£¬Ã¿ÐÐÊä³öÖ®áá»á¼ÓÈëÒ»¸ö¿Õ°×ÐС£        
                                                                               
        gawk 'BEGIN {OFS=";"; ORS="\n\n"} {print $1, $2}' BBS-list 
                                                                        
    ½á¹ûÈçÏÂËùʾ£º                                               
aardvark;555-5553                                                
                                                               
alpo-net;555-3412                                                      
                                                                
barfly;555-7685                                                           
                                                                       
bites;555-1675                                                        
                                                                   
camelot;555-0542                                                  
                                                              
core;555-2912                                                
                                                                 
fooey;555-1234                                                   
                                                                   
foot;555-6699                      
                                                              
macfoo;555-6480                                                              
                                                                   
sdace;555-3430                                                          
                                                                 
sabafoo;555-2127                                                 
                                                               
                                                                       
                                                                
                                                                          
  4.3 printfÐðÊö                                                       
                                                                      
    printf ÐðÊö»áʹµÃÊä³ö¸ñʽ½ÏÈÝÒ×¾«È·µØ¿ØÖÆ¡£printf ÐðÊö¿ÉÒÔ     
Ö¸¶¨Ã¿¸ö item Ó¡³öµÄ¿í¶È£¬Ò²¿ÉÒÔÖ¸¶¨Êý×ֵĸ÷ÖÖÐÍʽ¡£              
                                                              
    printf ÐðÊöµÄ¸ñʽÈçÏ£º                                  
                                                                 
        printf format, item1, item2, ...                         
                                                                   
    print Óë printf µÄ²î±ðÊÇÔÚì¶ format, printf µÄÒýÊý±È print   
                                                                   (p18 of  
¶àÁË×Ö´® format¡£format µÄÐÍʽÓë ANSI C µÄ printf Ö®¸ñʽÏàͬ¡£ 
                                                                             
    printf ²¢²»»á×ö×Ô¶¯»»Ðе͝×÷¡£ÄÚ½¨±äÊý OFS Óë ORS ¶Ô printf Ðð 
ÊöûÓÐÈκÎÓ°Ïì¡£                                                        
                                                                 
    ¸ñʽµÄÖ¸¶¨ÒÔ×ÖÔª'%'¿ªÊ¼£¬ááÃæ½ÓÖø¸ñʽ¿ØÖÆ×Öĸ¡£              
                                                               
    ¸ñʽ¿ØÖÆ×ÖĸÈçÏÂËùʾ£º                                             
                                                                
'c' ½«Êý×ÖÒÔ ASCII ×ÖÔªÓ¡³ö¡£                                             
    ÀýÈç'printf "%C",65'»áÓ¡³ö×ÖÔª'A'¡£                                
                                                                      
'd' Ó¡³öÊ®½øÎ»µÄÕûÊý¡£                                             
                                                                  
'i' Ó¡³öÊ®½øÎ»µÄÕûÊý¡£                                        
                                                             
'e' ½«Êý×ÖÒÔ¿ÆÑ§·ûºÅµÄÐÎʽӡ³ö¡£                                 
    ÀýÈç                                                         
                                                                   
      print "$4.3e",1950                    
                                                                   (p19 of  
                                                               
    ½á¹û»áÓ¡³ö'1.950e+03'¡£                                                  
                                                                    
'f' ½«Êý×ÖÒÔ¸¡µãµÄÐÎʽӡ³ö¡£                                            
                                                                 
'g' ½«Êý×ÖÒÔ¿ÆÑ§·ûºÅµÄÐÎʽ»ò¸¡µãµÄÐÎʽӡ³ö¡£Êý×ֵľø¶ÔÖµÈç¹û     
    ´óì¶µÈì¶0.0001ÔòÒÔ¸¡µãµÄÐÎʽӡ³ö£¬·ñÔòÒÔ¿ÆÑ§·ûºÅµÄÐÎʽӡ   
    ³ö¡£                                                               
                                                                
'o' Ó¡³öÎ޺ŵİ˽øÎ»ÕûÊý¡£                                                
                                                                       
's' Ó¡³öÒ»¸ö×Ö´®¡£                                                    
                                                                   
'x' Ó¡³öÎ޺ŵÄÊ®Áù½øÎ»ÕûÊý¡£10ÖÁ15ÒÔ'a'ÖÁ'f'±íʾ¡£                
                                                              
'X' Ó¡³öÎ޺ŵÄÊ®Áù½øÎ»ÕûÊý¡£10ÖÁ15ÒÔ'A'ÖÁ'F"±íʾ¡£           
                                                                 
'%' Ëü²¢²»ÊÇÕæÕýµÄ¸ñʽ¿ØÖÆ×Öĸ£¬'%%"½«Ó¡³ö"%'¡£                  
                                                                   
    ÔÚ % Óë¸ñʽ¿ØÖÆ×Öĸ֮¼ä¿É¼ÓÈë modifier£¬modifier ÊÇÓÃÀ´½øÒ» 
²½¿ØÖÆÊä³öµÄ¸ñʽ¡£¿ÉÄܵĠmodifier ÈçÏÂËùʾ£º                   
                                                                             
'-'     Ê¹ÓÃÔÚ width Ö®Ç°£¬Ö¸Ã÷ÊÇÏò×ó¿¿Æë¡£Èç¹û'-'ûÓгöÏÖ£¬Ôò»áÔÚ  
        ±»Ö¸¶¨µÄ¿í¶ÈÏòÓÒ¿¿Æë¡£ÀýÈ磺                                    
                                                                 
            printf "%-4S", "foo"                                 
                                                               
        »áÓ¡³ö'foo '¡£                                                 
                                                                
'width' ÕâÒ»¸öÊý×ÖָʾÏà¶ÔÓ¦µÄÀ¸Î»Ó¡³öʱµÄ¿í¶È¡£ÀýÈ磺                    
                                                                       
            printf "%4s","foo"                                        
                                                                   
        »áÓ¡³ö' foo'¡£                                            
                                                              
        width µÄÖµÊÇÒ»¸ö×îС¿í¶È¶ø·Ç×î´ó¿í¶È¡£Èç¹ûÒ»¸ö item µÄ 
        ÖµÐèÒªµÄ¿í¶È±È width ´ó£¬Ôò²»ÊÜ width µÄÓ°Ïì¡£ÀýÈç       
                                                                 
            printf "%4s","foobar"                    
    ½«Ó¡³ö'foobar'¡£                                       
                                                                             
'.prec' ´ËÊý×ÖÖ¸¶¨Ó¡³öʱµÄ¾«È·¶È¡£ËüÖ¸¶¨Ð¡ÊýµãÓұߵÄλÊý¡£Èç        
        ¹ûÊÇÒªÓ¡³öÒ»¸ö×Ö´®£¬ËüÖ¸¶¨´Ë×Ö´®×î¶à»á±»Ó¡³ö¶àÉÙ¸ö×Ö            
        Ôª¡£                                                     
                                                                 
                                                               
                                                                       
µÚÎåÕ  patterns                                                
                                                                          
    ÔÚ gawk ³ÌʽÀïÃæ£¬µ± pattern ·ûºÏÏÖÔÚµÄÊäÈë¼Ç¼(record)£¬Æä        
Ïà¶ÔÓ¦µÄ action ²Å»á±»Ö´ÐС£                                          
                                                                   
                                                                  
                                                              
  5.1 PatternµÄÖÖÀà                                            
                                                                 
    ÕâÀï¶Ô gawk µÄ¸÷ÖÖ pattern ÐÍʽ×÷Ò»ÕûÀí£º                    
                                                                   
/regular expression/                                    
                                                                  (p22 of  
    Ò»¸ö regular expression µ±×÷Ò»¸ö pattern¡£Ã¿µ±ÊäÈë¼Ç¼ (   
    record)º¬ÓРregular expression ¾ÍÊÓΪ·ûºÏ¡£                              
                                                                    
expression                                                              
    Ò»¸öµ¥Ò»µÄ expression¡£µ±Ò»¸öÖµ²»Îª 0 »òÒ»¸ö×Ö´®²»Êǿյ쬠  
    Ôò¿ÉÊÓΪ·ûºÏ¡£                                               
                                                               
pat1,pat2                                                              
    Ò»¶ÔµÄ patterns ÒÔ¶ººÅ·Ö¿ª£¬Ö¸¶¨¼Ç¼µÄ¡õΧ¡£                
                                                                          
BEGIN                                                                  
END                                                                   
    ÕâÊÇÌØ±ðµÄ pattern, gawk ÔÚ¿ªÊ¼Ö´ÐлòÒª½áÊøÊ±»á·Ö±ðÖ´ÐÐÏà      
    ¶ÔÓ¦ì¶BEGIN»òENDµÄ action¡£                                   
                                                              
null                                                           
    ÕâÊÇÒ»¸ö¿ÕµÄpattern£¬¶Ôì¶Ã¿¸öÊäÈë¼Ç¼½ÔÊÓΪ·ûºÏpattern¡£     
                                                        
                                                                   (p23 of  
  5.2 Regular Expressionsµ±×÷Patterns                          
                                                                             
    Ò»¸ö regular expression ¿É¼òдΪ regexp£¬ÊÇÒ»ÖÖÃèÊö×Ö´®µÄ·½     
·¨¡£Ò»¸ö regular expression ÒÔбÏß('/')°üΧµ±×÷ gawk µÄ pattern¡£       
                                                                 
    Èç¹ûÊäÈë¼Ç¼º¬ÓРregexp ¾ÍÊÓΪ·ûºÏ¡£ÀýÈ磺pattern Îª /foo/£¬ 
¶Ôì¶ÈκÎÊäÈë¼Ç¼º¬ÓÐ'foo'ÔòÊÓΪ·ûºÏ¡£                          
                                                                       
    ÏÂÃæµÄÀý×ӻὫº¬ÓÐ'foo'µÄÊäÈë¼Ç¼֮µÚ2¸öÀ¸Î»Ó¡³ö¡£          
                                                                          
        gawk '/foo/ {print $2}' BBS-list                               
                                                                      
    ½á¹ûÈçÏ£º                                                     
555-1234                                                          
555-6699                                                      
555-6480                                                       
555-2127                                                         
                                                                 
    regexp Ò²ÄÜʹÓÃÔڱȽϵÄËãʽ¡£                                  
                                             
                                                                   (p24 of  
exp ~ /regexp/                                                 
    Èç¹û exp ·ûºÏ regexp£¬Ôò½á¹ûÎªÕæ(true)¡£                                 
                                                                    
exp !~ /regexp/                                                         
    Èç¹û exp ²»·ûºÏ regexp£¬Ôò½á¹ûÎªÕæ¡£                         
                                                                 
                                                               
                                                                       
  5.3 ±È½ÏµÄËãʽµ±×÷Patterns                                    
                                                                          
    ±È½ÏµÄ pattern ÓÃÀ´²âÊÔÁ½¸öÊý×Ö»ò×Ö´®µÄ¹ØÏµÖîÈç´óì¶¡¢µÈì¶          
¡¢Ð¡ì¶¡£ÏÂÃæÁгöһЩ±È½ÏµÄpattern£º                                   
                                                                   
x<y   Èç¹û x Ð¡ì¶ y£¬Ôò½á¹ûÎªÕæ¡£                                 
x<=y  Èç¹û x Ð¡ì¶¡¢µÈì¶ y£¬Ôò½á¹ûÎªÕæ¡£                       
x>y   Èç¹û x ´óì¶ y£¬Ôò½á¹ûÎªÕæ¡£                              
x>=y  Èç¹û x ´óì¶¡¢µÈì¶ y£¬Ôò½á¹ûÎªÕæ¡£                          
x==y  Èç¹û x µÈì¶ y£¬Ôò½á¹ûÎªÕæ¡£                                
x!=y  Èç¹û x ²»µÈì¶ y£¬Ôò½á¹ûÎªÕæ¡£                                
x~y   Èç¹û x ·ûºÏ regular expression y£¬Ôò½á¹ûÎªÕæ¡£ 
                                                                  (p25 of  
x!~y  Èç¹û x ²»·ûºÏ regular expression y£¬Ôò½á¹ûÎªÕæ¡£         
                                                                             
    ÉÏÃæËùÌáµ½µÄ x Óë y£¬Èç¹û¶þÕß½ÔÊÇÊý×ÖÔòÊÓΪÊý×ÖÖ®¼äµÄ±È½Ï£¬     
·ñÔòËüÃǻᱻת»»³É×Ö´®ÇÒÒÔ×Ö´®µÄÐÎʽ×ö±È½Ï¡£Á½¸ö×Ö´®µÄ±È½Ï£¬            
»áÏȱȽϵÚÒ»¸ö×ÖÔª£¬È»áá±È½ÏµÚ¶þ¸ö×ÖÔª£¬ÒÀ´ËÀàÍÆ£¬Ö±µ½Óв»Í¬     
µÄµØ·½³öÏÖΪֹ¡£Èç¹ûÁ½¸ö×Ö´®Ôڽ϶̵ÄÒ»¸ö½áÊøÖ®Ç°ÊÇÏàµÈ£¬ÔòÊÓ     
Ϊ³¤µÄ×Ö´®±È¶ÌµÄ×Ö´®´ó¡£ÀýÈç "10" ±È "9" Ð¡£¬"abc" ±È "abcd" Ð¡¡£ 
                                                                       
                                                                
                                                                          
  5.4 Ê¹Óò¼ÁÖÔËËãµÄPatterns                                           
                                                                      
    Ò»¸ö²¼ÁÖ(boolean) pattern ÊÇʹÓò¼ÁÖÔËËã"»ò"('||')£¬"¼°"       
('&&')£¬"·´"('!')À´×éºÏÆäËüµÄpattern¡£                            
ÀýÈ磺                                                        
                                                               
    gawk '/2400/ && /foo/' BBS-list                              
    gawk '/2400/ || /foo/' BBS-list                              
    gawk '! /foo/' BBS-list                              
                                                              
                                                                             
µÚÁùÕ  Ëãʽ(Expression)×÷ΪActionsµÄÐðÊö                           
                                                                        
    Ëãʽ(Expression) ÊÇgawk³ÌʽÀïÃæactionµÄ»ù±¾¹¹³ÉÕß¡£          
                                                                 
                                                                  
                                                                       
  6.1 ËãÊõÔËËã                                                  
                                                                          
    gawk ÀïµÄËãÊõÔËËãÈçÏÂËùʾ£º                                        
                                                                      
x+y  ¼Ó                                                            
x-y  ¼õ                                                           
-x   ¸º                                                       
+x   Õý¡£Êµ¼ÊÉÏûÓÐÈκÎÓ°Ïì¡£                                  
x*y  ³Ë                                                          
x/y  ³ý                                                          
x%y  ÇóâÅÊý¡£ÀýÈç 5%3=2¡£                                          
x^y                                       
x**y x µÄ y ´Î·½¡£ÀýÈç2^3=8¡£                                  
                                                                             
                                                                    
                                                                        
  6.2 ±È½ÏËãʽÓë²¼ÁÖËãʽ                                         
                                                                 
    ±È½ÏËãʽ (comparison expression) ÓÃÀ´±È½Ï×Ö´®»òÊý×ֵĹØÏµ     
£¬ÔËËã·ûºÅÓë C ÓïÑÔÏàͬ¡£±íÁÐÈçÏ£º                                    
                                                                
x<y                                                                       
x<=y                                                                   
x>y                                                                   
x>=y                                                               
x==y                                                              
x!=y                                                          
x~y                                                            
x!~y                                                             
                                                                 
±È½ÏµÄ½á¹ûÎªÕæ(true)ÔòÆäÖµÊÇ 1¡£·ñÔòÆäÖµÊÇ 0¡£     
   ²¼ÁÖËãʽ(boolean expression)ÓÐÏÂÃæÈýÖÖ£º                   
                                                                             
boolean1 && boolean2                                                
boolean1 || boolean2                                                    
! boolean                                                        
                                                                 
                                                                  
                                                                       
  6.3 Ìõ¼þËãʽ(Conditional Expressions)                         
                                                                          
    Ò»¸öÌõ¼þʽËãʽÊÇÒ»ÖÖÌØ±ðµÄËãʽ£¬Ëüº¬ÓÐ3¸öÔËËãÔª¡£                  
    Ìõ¼þʽËãʽÓëCÓïÑÔµÄÏàͬ£º                                         
                                                                   
        selector ? if-true-exp : if-false-exp                     
                                                              
ËüÓÐ3¸ö×ÓËãʽ¡£µÚÒ»¸ö×ÓËãʽselector Ê×ÏȻᱻ¼ÆËã¡£Èç¹ûÊÇÕæ,    
Ôòif-true-exp»á±»¼ÆËãÇÒËüµÄÖµ±ä³ÉÕû¸öËãʽµÄÖµ¡£·ñÔòif-false-     
exp »á±»¼ÆËãÇÒËüµÄÖµ±ä³ÉÕû¸öËãʽµÄÖµ¡£                           
                                                                   
    ÀýÈçÏÂÃæµÄÀý×Ó»á²úÉúxµÄ¾ø¶ÔÖµ£º            
   x>0 ? x : -x                                                         
                                                                    
                                                                        
                                                                 
µÚÆßÕ  ActionsÀïÃæµÄ¿ØÖÆÐðÊö                                    
                                                                  
    ÔÚ gawk ³ÌʽÀïÃæ£¬¿ØÖÆÐðÊöÖîÈç if¡¢while µÈ¿ØÖƳÌʽִÐеÄÁ÷        
³Ì¡£ÔÚ gawk ÀïµÄ¿ØÖÆÐðÊöÓë C µÄÀàËÆ¡£                           
                                                                          
    ºÜ¶àµÄ¿ØÖÆÐðÊö»á°üÀ¨ÆäËüµÄÐðÊö£¬±»°üÀ¨µÄÐðÊö³ÆÎª body¡£¼Ù          
Èç body ÀïÃæ°üÀ¨Ò»¸öÒÔÉϵÄÐðÊö£¬±ØÐëÒÔ´óÀ¨»¡ { } ½«ÕâЩÐðÊöÀ¨Æð       
À´£¬¶ø¸÷¸öÐðÊöÖ®¼äÐèÒÔ»»ÐÐ(newline)»ò·ÖºÅ¸ô¿ª¡£                    
                                                                  
                                                              
                                                               
  7.1 if ÐðÊö                                                    
                                                                 
        if (condition) then-body [else else-body]   
                                                                   (p30 of  
Èç¹û condition ÎªÕæ(true)£¬ÔòÖ´ÐРthen-body£¬·ñÔòÖ´ÐРelse-body¡£ 
                                                                             
    ¾ÙÒ»¸öÀý×ÓÈçÏ£º                                                
                                                                        
        if (x % 2 == 0)                                          
           print "x is even"                                     
        else                                                      
           print "x is odd"                                            
                                                                
                                                                          
                                                                       
  7.2 while ÐðÊö                                                      
                                                                   
        while (condition)                                         
           body                                               
                                                               
while ÐðÊö×öµÄµÚÒ»¼þʾÍÊDzâÊÔ condition¡£¼ÙÈç condition ÎªÕæÔò  
Ö´ÐРbody µÄÐðÊö¡£body µÄÐðÊöÖ´ÐÐÍêáᣬ»áÔÙ²âÊÔ condition£¬¼ÙÈç  
condition ÎªÕ棬Ôò body »áÔٶȱ»Ö´ÐС£Õâ¸ö¹ý³Ì»áÒ»Ö±±»Öظ´Ö±µ½     
condition ²»ÔÙÊÇÕæ¡£Èç¹û condition µÚÒ»´Î²âÊÔ¾ÍÊÇα(false)£¬Ôò  
body ´ÓûÓб»Ö´ÐС£                                               
                                                                             
    ÏÂÃæµÄÀý×Ó»áÓ¡³öÿ¸öÊäÈë¼Ç¼(record)µÄǰÈý¸öÀ¸Î»¡£              
                                                                        
        gawk '{ i=1                                              
                while (i <= 3) {                                 
                    print $i                                      
                    i++                                                
                }                                               
              }'                                                          
                                                                       
                                                                      
                                                                   
  7.3 do-while ÐðÊö                                               
                                                              
        do                                                     
           body                                                  
        while (condition)                                        
                                                                   
Õâ¸ö do loop Ö´ÐРbody Ò»´Î£¬È»ááÖ»Òª condition ÊÇÕæÔò»áÖØ¸´Ö´ÐРbody¡£ 
                                                                   (p32 of  
¼´Ê¹¿ªÊ¼Ê± condition ÊÇᣬbody Ò²»á±»Ö´ÐÐÒ»´Î¡£                  
                                                                             
    ÏÂÃæµÄÀý×Ó»áÓ¡³öÿ¸öÊäÈë¼Ç¼ʮ´Î¡£                              
                                                                        
        gawk '{ i= 1                                             
                do {                                             
                   print $0                                       
                   i++                                                 
                } while (i <= 10)                               
        }'                                                                
                                                                       
                                                                      
                                                                   
  7.4 for ÐðÊö                                                    
                                                              
        for (initialization; condition; increment)             
           body                                                  
                                                                 
´ËÐðÊö¿ªÊ¼Ê±»áÖ´ÐÐinitialization£¬È»ááÖ»Òª conditionÊÇÕæ£¬Ëü       
»áÖØ¸´Ö´ÐÐbodyÓë×öincrement ¡£                                  
                                                               
    ÏÂÃæµÄÀý×Ó»áÓ¡³öÿ¸öÊäÈë¼Ç¼µÄǰÈý¸öÀ¸Î»¡£                               
                                                                    
        gawk '{ for (i=1; i<=3; i++)                                    
                   print $i                                      
        }'                                                       
                                                                  
                                                                       
                                                                
  7.5 break ÐðÊö                                                          
                                                                       
    break ÐðÊö»áÌø³ö°üº¬ËüµÄ for¡¢while¡¢do-while »ØÈ¦µÄ×îÄڲ㡣      
                                                                   
    ÏÂÃæµÄÀý×Ó»áÕÒ³öÈκÎÕûÊýµÄ×îС³ýÊý£¬ËüÒ²»áÅжÏÊÇ·ñΪÖÊÊý¡£    
                                                              
        gawk '# find smallest divisor of num                   
             { num=$1                                            
               for (div=2; div*div <=num; div++)                 
                  if (num % div == 0)                              
                     break                               
           if (num % div == 0) 
                  printf "Smallest divisor of %d is %d\n", num, div 
               else                        
                  printf "%d is prime\n", num }' 
                                         
                                     
                           
  7.6 continue ÐðÊö                    
                                                                 (p34 of 46) 
    continue ÐðÊöʹÓÃì¶ for¡¢while¡¢do-while »ØÈ¦ÄÚ²¿£¬Ëü»áÌø 
¹ý»ØÈ¦ body µÄÊ£âŲ¿·Ö£¬Ê¹µÃËüÁ¢¿Ì½øÐÐÏÂÒ»´Î»ØÈ¦µÄÖ´ÐС£          
                                                                  
    ÏÂÃæµÄÀý×Ó»áÓ¡³ö 0 ÖÁ 20 µÄÈ«²¿Êý×Ö£¬µ«ÊÇ 5 ²¢²»»á±»Ó¡³ö¡£            
                                                               
        gawk 'BEGIN {                        
             for (x=0; x<=20; x++) {         
                if (x==5)                                              
                   continue                      
                printf ("%d",x)                                           
             }                   
             print ""              
        }'                                                          
                                           
                                                 
                                         
  7.7 next ÐðÊö¡¢next file ÐðÊö¡¢exit ÐðÊö 
                           
    next ÐðÊöÇ¿ÆÈ gawk Á¢¿ÌÍ£Ö¹´¦ÀíĿǰµÄ¼Ç¼(record)¶ø¼ÌÐøÏÂÒ»    
¸ö¼Ç¼¡£                                               
                                                           
    next file ÐðÊöÀàËÆ next¡£È»¶ø£¬ËüÇ¿ÆÈ gawk Á¢¿ÌÍ£Ö¹´¦ÀíĿǰ   
µÄ×ÊÁϵµ¡£                                                        
                                                                          
    exit ÐðÊö»áʹµÃ gawk ³ÌʽִֹͣÐжøÌø³ö¡£È»¶ø£¬Èç¹û END ³öÏÖ 
£¬Ëü»áÈ¥Ö´ÐРEND µÄ actions¡£                
                                             
                                                                       
                                                 
µÚ°ËÕ  ÄÚ½¨º¯Ê½(Built-in Functions)                                      
                                 
    ÄÚ½¨º¯Ê½ÊÇ gawk ÄÚ½¨µÄº¯Ê½£¬¿ÉÔÚ gawk ³ÌʽµÄÈκεط½ºô½ÐÄÚ½¨ 
º¯Ê½¡£                                                              
                                           
                                                 
                                         
  8.1 ÊýÖµ·½ÃæµÄÄÚ½¨º¯Ê½                   
                           
int(x)      Çó³ö x µÄÕûÊý²¿·Ý£¬³¯Ïò 0 µÄ·½Ïò×öÉáÈ¥¡£ÀýÈ磺int(3.9) 
            ÊÇ 3£¬int(-3.9) ÊÇ -3¡£                  
                                                                   (p36 of 46) 
sqrt(x)     Çó³ö x ÕýµÄƽ·½¸ùÖµ¡£Àý sqrt(4)=2                 
exp(x)      Çó³ö x µÄ´Î·½¡£Àý exp(2) ¼´ÊÇÇó e*e ¡£                
log(x)      Çó³ö x µÄ×ÔÈ»¶ÔÊý¡£                                   
sin(x)      Çó³ö x µÄ sine Öµ£¬x ÊÇåò¶ÈÁ¿¡£                               
cos(x)      Çó³ö x µÄ cosine Öµ£¬x ÊÇåò¶ÈÁ¿¡£                    
atan2(y,x)  Çó y/x µÄ arctangent Öµ£¬ËùÇó³öµÄÖµÆäµ¥Î»ÊÇåò¶ÈÁ¿¡£ 
rand()      µÃ³öÒ»¸öÂÒÊýÖµ¡£´ËÂÒÊýֵƽ¾ù·Ö²¼ÔÚ 0 ºÍ 1 Ö®¼ä¡£Õâ¸ö 
            Öµ²»»áÊÇ 0£¬Ò²²»»áÊÇ 1¡£                                   
            Ã¿´ÎÖ´ÐРgawk£¬rand ¿ªÊ¼²úÉúÊý×Ö´ÓÏàͬµã»ò seed¡£ 
srand(x)    É趨²úÉúÂÒÊýµÄ¿ªÊ¼µã»ò seed Îª x¡£Èç¹ûÔÚµÚ¶þ´ÎÄãÉè            
            ¶¨ÏàͬµÄ seed Öµ£¬Ä㽫Ôٶȵõ½ÏàͬÐòÁеÄÂÒÊýÖµ¡£ 
            Èç¹ûÊ¡ÂÔÒýÊý x£¬ÀýÈç srand()£¬ÔòÏÖÔÚµÄÈÕÆÚ¡¢Ê±¼ä»á   
            ±»µ±³É seed¡£Õâ¸ö·½·¨¿ÉʹµÃÂÒÊýÖµÊÇÕæÕý²»¿ÉÔ¤²âµÄ¡£     
            srand µÄ´«»ØÖµ(return value)ÊÇǰ´ÎËùÉ趨µÄ seed Öµ¡£ 
                                                 
                                         
                                           
  8.2 ×Ö´®·½ÃæµÄÄÚ½¨º¯Ê½   
                                                                   
index(in, find)                            
                                                                (p37 of 46) 
    Ëü»áÔÚ×Ö´® in ÀïÃæ£¬Ñ°ÕÒ×Ö´® find µÚÒ»´Î³öÏֵĵط½£¬´«»ØÖµÊÇ 
    ×Ö´® find ³öÏÖÔÚ×Ö´® in ÀïÃæµÄλÖá£Èç¹ûÔÚ×Ö´® in ÀïÃæÕÒ²»µ½×Ö 
    ´® find£¬Ôò´«»ØÖµÎª 0¡£                                       
    ÀýÈ磺                                                                
        print index("peanut","an")                               
    »áÓ¡³ö 3¡£                                                  
                                                                 
length(string)                                                         
    Çó³ö string Óм¸¸ö×ÖÔª¡£                                  
    ÀýÈ磺                                                                
        length("abcde")                                      
    ÊÇ 5¡£                                                       
                                                                    
match(string,regexp)                                             
    match º¯Ê½»áÔÚ×Ö´® string ÀïÃæ£¬Ñ°ÕÒ·ûºÏ regexp µÄ×¡¢×î¿¿ 
    ×ó±ßµÄ×Ó×Ö´®¡£´«»ØÖµÊÇ regexp ÔÚ string µÄ¿ªÊ¼Î»Ö㬼´ index 
    Öµ¡£                                   
    match º¯Ê½»áÉ趨ÄÚÔÚ±äÊý RSTART µÈì¶ index£¬ËüÒ²»áÉ趨ÄÚÔÚ±ä 
    Êý RLENGTH µÈì¶·ûºÏµÄ×ÖÔª¸öÊý¡£Èç¹û²»·ûºÏ£¬Ôò»áÉ趨 RSTART Îª  
    0¡¢RLENGTH Îª -1¡£                                 
                                                                   (p38 of 46) 
                                                                 
sprintf(format,expression1,...)                                    
    ¾Ù printf ÀàËÆ£¬µ«ÊÇ sprintf ²¢²»Ó¡³ö£¬¶øÊÇ´«»Ø×Ö´®¡£         
    ÀýÈ磺                                                                
        sprintf("pi = %.2f (approx.)',22/7)                      
    ´«»ØµÄ×Ö´®Îª"pi = 3.14 (approx.)"                           
                                                                 
sub(regexp, replacement,target)                                        
    ÔÚ×Ö´® target ÀïÃæ£¬Ñ°ÕÒ·ûºÏ regexp µÄ×¡¢×î¿¿×ó±ßµÄµØ·½£¬ 
    ÒÔ×Ö´® replacement ´úÌæ×î×ó±ßµÄ regexp¡£                              
    ÀýÈ磺                                                   
        str = "water, water, everywhere"                         
        sub(/at/, "ith",str)                                        
    ½á¹û×Ö´®str»á±ä³É                                            
    "wither, water, everywhere"                                  
                                                                 
gsub(regexp, replacement, target)          
    gsub ÓëÇ°ÃæµÄ sub ÀàËÆ¡£ÔÚ×Ö´® target ÀïÃæ£¬Ñ°ÕÒ·ûºÏ regexp µÄ 
    ËùÓеط½£¬ÒÔ×Ö´® replacement ´úÌæËùÓеĠregexp¡£               
    ÀýÈ磺                                             
                                                                  (p39 of 46) 
        str="water, water, everywhere"                           
        gsub(/at/, "ith",str)                                      
    ½á¹û×Ö´®str»á±ä³É                                             
    'wither, wither, everywhere"                                          
                                                                 
substr(string, start, length)                                   
    ´«»Ø×Ö´® string µÄ×Ó×Ö´®£¬Õâ¸ö×Ó×Ö´®µÄ³¤¶ÈΪ length ¸ö×ÖÔª£¬ 
    ´ÓµÚ start ¸öλÖÿªÊ¼¡£                                            
    ÀýÈ磺                                                       
      substr("washington",5,3)                                            
    ´«»ØÖµÎª"ing"                                            
    Èç¹û length Ã»ÓгöÏÖ£¬Ôò´«»ØµÄ×Ó×Ö´®ÊÇ´ÓµÚ start ¸öλÖÿªÊ¼  
    ÖÁ½áÊø¡£                                                        
    ÀýÈ磺                                                       
        substr("washington",5)                                   
    ´«»ØÖµÎª"ington"                                             
                                           
tolower(string)                                                    
    ½«×Ö´®stringµÄ´óд×Öĸ¸ÄΪСд×Öĸ¡£                           
    ÀýÈ磺                                        
      tolower("MiXeD cAsE 123")                                
    ´«»ØÖµÎª"mixed case 123"                                       
                                                                  
toupper(string)                                                           
    ½«×Ö´®stringµÄСд×Öĸ¸ÄΪ´óд×Öĸ¡£                         
    ÀýÈ磺                                                      
        toupper("MiXeD cAsE 123")                                
    ´«»ØÖµÎª"MIXED CASE 123"                                           
                                                                 
                                                                          
                                                             
  8.3 ÊäÈëÊä³öµÄÄÚ½¨º¯Ê½                                         
                                                                    
close(filename)                                                  
    ½«ÊäÈë»òÊä³öµÄµµ°¸ filename ¹Ø±Õ¡£                           
                                                                 
system(command)                            
    ´Ëº¯Ê½ÔÊÐíʹÓÃÕßÖ´ÐÐ×÷ҵϵͳµÄÖ¸ÁִÐÐÍê±ÏáὫ»Øµ½ gawk      
    ³Ìʽ¡£                                                         
    ÀýÈ磺                                      
   BEGIN {system("ls")}                                     
                                                                   
                                                                  
                                                                          
µÚ¾ÅÕ  Ê¹ÓÃÕß¶¨ÒåµÄº¯Ê½(User-defined Functions)                 
                                                                
    ¸´ÔӵĠgawk ³Ìʽ³£³£¿ÉÒÔʹÓÃ×Ô¼º¶¨ÒåµÄº¯Ê½À´¼ò»¯¡£ºô½ÐʹÓà  
Õß¶¨ÒåµÄº¯Ê½Óëºô½ÐÄÚ½¨º¯Ê½µÄ·½·¨Ò»Ñù¡£                                 
                                                                 
                                                                          
                                                             
  9.1 º¯Ê½¶¨ÒåµÄ¸ñʽ                                             
                                                                    
    º¯Ê½µÄ¶¨Òå¿ÉÒÔ·ÅÔÚ gawk ³ÌʽµÄÈκεط½¡£                     
                                                                 
    Ò»¸öʹÓÃÕß¶¨ÒåµÄº¯Ê½Æä¸ñʽÈçÏ£º                             
                                           
        function name (parameter-list) {                           
           body-of-function                                        
        }                                     
                                                             
name ÊÇËù¶¨ÒåµÄº¯Ê½Ö®Ãû³Æ¡£Ò»¸öÕýÈ·µÄº¯Ê½Ãû³Æ¿É°üÀ¨Ò»ÐòÁеÄ×Ö      
ĸ¡¢Êý×Ö¡¢Ï±êÏß (underscores)£¬µ«ÊDz»¿ÉÓÃÊý×Ö×ö¿ªÍ·¡£            
                                                                          
    parameter-list ÊÇÁгöº¯Ê½µÄÈ«²¿ÒýÊý(argument)£¬¸÷¸öÒýÊýÖ®    
¼äÒÔ¶ºµã¸ô¿ª¡£                                                  
                                                                 
    body-of-function °üº¬ gawk µÄÐðÊö (statement)¡£ËüÊǺ¯Ê½¶¨Òå        
Àï×îÖØÒªµÄ²¿·Ý£¬Ëü¾ö¶¨º¯Ê½Êµ¼ÊÒª×öºÎÖÖÊ¡£                       
                                                                          
                                                             
                                                                 
  9.2 º¯Ê½¶¨ÒåµÄÀý×Ó                                                
                                                                 
    ÏÂÃæÕâ¸öÀý×Ó£¬»á½«Ã¿¸ö¼Ç¼µÄµÚÒ»¸öÀ¸Î»Ö®ÖµµÄƽ·½ÓëµÚ¶þ¸ö     
À¸Î»Ö®ÖµµÄƽ·½¼ÓÆðÀ´¡£                                           
                                           
{print "sum =",SquareSum($1,$2)}                                   
function SquareSum(x,y) {                                          
    sum=x*x+y*y                                  
  return sum                                                   
}                                                                  
                                                                  
                                                                          
                                                                 
µÚʮՠ ¡õÀý                                                    
                                                                 
    ÕâÀォÁгö gawk ³ÌʽµÄһЩÀý×Ó¡£                                   
                                                                 
gawk '{if (NF > max) max = NF}                                            
      END {print max}'                                       
    ´Ë³Ìʽ»áÓ¡³öËùÓÐÊäÈëÐÐÖ®ÖУ¬À¸Î»µÄ×î´ó¸öÊý¡£                 
                                                                    
gawk 'length($0) > 80'                                           
    ´Ë³Ìʽ»áÓ¡³öÒ»Ðг¬¹ý 80 ¸ö×ÖÔªµÄÿһÐС£´Ë´¦Ö»ÓРpattern ±»  
    Áгö£¬action ÊDzÉÓÃÄÚ¶¨µÄ print¡£                            
                                           
gawk 'NF > 0'                                                      
    ¶Ôì¶ÓµÓÐÖÁÉÙÒ»¸öÀ¸Î»µÄËùÓÐÐУ¬´Ë³Ìʽ½Ô»áÓ¡³ö¡£ÕâÊÇÒ»¸ö¼ò       
    µ¥µÄ·½·¨£¬½«Ò»¸öµµ°¸ÀïµÄËùÓпհ×ÐÐɾ³ý¡£        
                                                               
gawk '{if (NF > 0) print}'                                         
    ¶Ôì¶ÓµÓÐÖÁÉÙÒ»¸öÀ¸Î»µÄËùÓÐÐУ¬´Ë³Ìʽ½Ô»áÓ¡³ö¡£ÕâÊÇÒ»¸ö¼ò      
    µ¥µÄ·½·¨£¬½«Ò»¸öµµ°¸ÀïµÄËùÓпհ×ÐÐɾ³ý¡£                              
                                                                 
gawk 'BEGIN {for (i = 1; i <= 7; i++)                           
                print int(101 * rand())}'                        
    ´Ë³Ìʽ»áÓ¡³ö¡õΧÊÇ 0 µ½ 100 Ö®¼äµÄ 7 ¸öÂÒÊýÖµ¡£                    
                                                                 
ls -l files | gawk '{x += $4}; END {print "total bytes: " x}'             
    ´Ë³Ìʽ»áÓ¡³öËùÓÐÖ¸¶¨µÄµµ°¸Ö®bytesÊýÄ¿µÄ×ܺ͡£            
                                                                 
expand file | gawk '{if (x < length()) x = length()}                
                    END {print "maximum line length is " x}'     
    ´Ë³Ìʽ»á½«Ö¸¶¨µµ°¸Àï×һÐеij¤¶ÈÓ¡³ö¡£expand »á½« tab ¸Ä   
    ³É space£¬ËùÒÔÊÇÓÃʵ¼ÊµÄÓұ߽çÀ´×ö³¤¶ÈµÄ±È½Ï¡£               
                                           
gawk 'BEGIN {FS = ":"}                                             
      {print $1 | "sort"}' /etc/passwd                             
    ´Ë³Ìʽ»á½«ËùÓÐʹÓÃÕßµÄloginÃû³Æ£¬ÒÀÕÕ×ÖĸµÄ˳ÐòÓ¡³ö 
                                                               
gawk '{nlines++}                                                   
      END {print nlines}'                                         
    ´Ë³Ìʽ»á½«Ò»¸öµµ°¸µÄ×ÜÐÐÊýÓ¡³ö¡£                                      
                                                                 
gawk 'END {print NR}'                                           
    ´Ë³ÌʽҲ»á½«Ò»¸öµµ°¸µÄ×ÜÐÐÊýÓ¡³ö£¬µ«ÊǼÆËãÐÐÊýµÄ¹¤×÷ÓÉgawk   
    À´×ö¡£                                                             
                                                                 
gawk '{print NR,$0}'                                                      
    ´Ë³Ìʽӡ³öµµ°¸µÄÄÚÈÝʱ£¬»áÔÚÿÐеÄ×îÇ°ÃæÓ¡³öÐкţ¬ËüµÄ¹¦ 
    ÄÜÓë 'cat -n' ÀàËÆ¡£                                         
                                                                    
                                                                 
                                                                 
µÚʮһÕ  ½áÂÛ                                                   
                                           
    gawk ¶Ôì¶×ÊÁϵĴ¦Àí¾ßÓкÜÇ¿µÄ¹¦ÄÜ¡£ËüÄܹ»ÒԺ̵ܶijÌʽÍê³É      
ÏëÒª×öµÄÊ£¬ÉõÖÁÒ»»ò¶þÐеijÌʽ¾ÍÄÜÍê³ÉÖ¸¶¨µÄ¹¤×÷¡£Í¬ÑùµÄÒ»¼þ       
¹¤×÷£¬ÒÔ gawk ³ÌʽÀ´Ð´»á±ÈÓÃÆäËü³ÌʽÓïÑÔÀ´Ð´¶ÌºÜ¶à¡£                                                                 
    gawk ÊÇ GNU Ëù×öµÄ awk£¬ËüÊǹ«ÖÚÈíÌå(Public Domain) ¿ÉÃâ·Ñʹ   
Óᣠ                                                             
                                                                          
                                                                 
                                                                
                                                                 
                                                                       
                                                                 
                                    
 
-- 
================================================================ 
ID: dfbb                 NICKNAME:ÕÔÎ޼ɠ    REALNAME:·½ºº 
---------------------------------------------------------------- 
°®ºÃ:GAME,Linux, PC            Email:    fangh@csun01.ihep.ac.cn 
     ÎäÏÀ,¹ÅÎÄ   Clinux Homepage:http://csun01.ihep.ac.cn/linux/ 
================================================================ 
 
¡ù ÐÞ¸Ä:¡¤dfbb ì¶ Nov 11 15:22:42 Ð޸ı¾ÎÄ¡¤[FROM:    ie0.ie.ac.cn] 
¡ù ÐÞ¸Ä:¡¤dfbb ì¶ Nov 11 15:23:00 Ð޸ı¾ÎÄ¡¤[FROM:    ie0.ie.ac.cn] 
¡ù ÐÞ¸Ä:¡¤dfbb ì¶ Nov 11 15:23:38 Ð޸ı¾ÎÄ¡¤[FROM:    ie0.ie.ac.cn] 
¡ù ÐÞ¸Ä:¡¤dfbb ì¶ Nov 13 20:50:03 Ð޸ı¾ÎÄ¡¤[FROM:    ie0.ie.ac.cn] 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: ie0.ie.ac.cn] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø