Linux Shell 编程

源代码在线查看: [ 永远的unix gawk的使用方法 ].htm

软件大小: 17640 K
上传用户: changke8311
关键词: Linux Shell 编程
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				[ 永远的UNIX > gawk的使用方法 ]
				
				BODY {
					FONT: 12pt 宋体
				}
				TH {
					FONT: 12pt 宋体
				}
				INPUT {
					FONT: 12pt 宋体
				}
				SELECT {
					FONT: 12pt 宋体
				}
				TEXTAREA {
					FONT: 12pt 宋体
				}
				SELECT {
					FONT: 12pt 宋体
				}
				checkbox {
					FONT: 12pt 宋体
				}
				A:link {
					COLOR: #e6a306; TEXT-DECORATION: underline
				}
				A:visited {
					COLOR: #e6a306; TEXT-DECORATION: underline
				}
				A:hover {
					COLOR: #ffff00; TEXT-DECORATION: underline
				}
				BODY {
					FONT-FAMILY: "宋体", "serif"; FONT-SIZE: 12pt
				}
				TD {
					FONT-FAMILY: "宋体", "serif"; FONT-SIZE: 12pt
				}
				P {
					FONT-SIZE: 9pt; LINE-HEIGHT: 150%
				}
				
				
				
								text=#ffffff>
				
				
				
				  
				  
				    
				      				      src="[ 永远的UNIX  gawk的使用方法 ].files/title.gif">
				  
				  
				    				      href="http://www.fanqiang.com/">首页 > 编程技术 > 其它 > 
				  正文
				  
				    				      src="[ 永远的UNIX  gawk的使用方法 ].files/c.gif" width=1>
				  
				    				      size=5>gawk的使用方法
				  
				    				      color=#999999>http://www.fanqiang.com (2001-04-27 
				      13:12:55)
				  
				    
				      
				        
				        
				          第一章    前言  第二章    简介  
				            第三章    读取输入档案  第四章    印出  第五章    Patterns  
				            第六章    算式(Expression)作为Actions的叙述  第七章    Actions里面的控制叙述  
				            第八章    内建函式(Built-in Functions)  第九章    使用者定义的函式  
				            第十章    □例  第十一章  结论        
				            =======================================    第一章  前言  
				                  awk 是一个程式语言,对於资料的处理具有很强的功能。对於文  
				            字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式  
				            轻易地完成。如果使用 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 的内定值是表示新一行的   
				            字元(newline character),因此内定的 record separator 使得文字              
				            的每一行是一个记录。                                                    
				                                                                                   
				                record separator 随著内建变数 RS 的改变而改变。RS 是一个字串,  
				            它的内定值是"\n"。仅有 RS 的第一个字元是有效的,它被当作 record  
				            separator,而 RS 的其它字元会被忽略。                         
				                                                                          
				                内建变数 FNR 会储存目前的输入档案已颈欢寥〉募锹贾			

相关资源