⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 [ 永远的unix gawk的使用方法 ].htm

📁 Linux Shell 编程
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)http://www.fanqiang.com/a4/b8/20010427/131255.html -->
<HTML><HEAD><TITLE>[ 永远的UNIX > gawk的使用方法 ]</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>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%
}
</STYLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY background="[ 永远的UNIX  gawk的使用方法 ].files/bline.gif" bgColor=#000000 
text=#ffffff>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=400 width=750>
  <TBODY>
  <TR>
    <TD height=45>
      <P align=center><IMG alt="[ 永远的UNIX::UNIX技术资料的宝库 ]" 
      src="[ 永远的UNIX  gawk的使用方法 ].files/title.gif"></P></TD></TR>
  <TR>
  <TR>
    <TD align=left height=40 vAlign=bottom><SMALL><A 
      href="http://www.fanqiang.com/">首页</A> &gt; 编程技术 &gt; 其它 &gt; 
  正文</SMALL></TD></TR>
  <TR>
    <TD bgColor=#d09f0d colSpan=5 height=2 width="100%"><IMG height=1 
      src="[ 永远的UNIX  gawk的使用方法 ].files/c.gif" width=1></TD></TR>
  <TR>
    <TD align=middle height=40 vAlign=center><FONT 
      size=5><B>gawk的使用方法</B></FONT></TD></TR>
  <TR>
    <TD align=middle height=20><FONT 
      color=#999999><SMALL>http://www.fanqiang.com (2001-04-27 
      13:12:55)</SMALL></FONT></TD></TR>
  <TR>
    <TD align=middle>
      <TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=700>
        <TBODY>
        <TR>
          <TD vAlign=top><FONT color=#cccccc><BR>第一章    前言  <BR>第二章    简介  
            <BR>第三章    读取输入档案  <BR>第四章    印出  <BR>第五章    Patterns  
            <BR>第六章    算式(Expression)作为Actions的叙述  <BR>第七章    Actions里面的控制叙述  
            <BR>第八章    内建函式(Built-in Functions)  <BR>第九章    使用者定义的函式  
            <BR>第十章    □例  <BR>第十一章  结论  <BR>  <BR>  <BR>  
            <BR>=======================================  <BR>  <BR>第一章  前言  
            <BR>  <BR>    awk 是一个程式语言,对於资料的处理具有很强的功能。对於文  
            <BR>字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式  
            <BR>轻易地完成。如果使用 C 或 Pascal 等语言写程式完成上述的动作,  <BR>会不方便且很花费时间,所写的程式也会很大。  
            <BR>  <BR>    awk 能够依照使用者的定义格式来分解输入资料,也可依照使用  <BR>者定义的格式来印出资料。  
            <BR>  <BR>    awk 名称的由来是由它的原始设计者的姓氏之第一个字母而命名  
            <BR>:Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan。  
            <BR>awk最初在1977年完成。一个新版本的awk在1985年被发表,它的功能  <BR>比旧版本增强不少。  <BR>  
            <BR>    gawk 是GNU所做的 awk,gawk 最初在1986年完成,之後不断地  
            <BR>被改进、更新。gawk 包含 awk 的所有功能。  <BR>  
            <BR>    往後的 gawk 将以下面的2个输入档案来做例子说明。  <BR>  <BR>档案'BBS-list':  
            <BR>aardvark     555-5553     1200/300           B  
            <BR>alpo-net     555-3412     2400/1200/300      A  
            <BR>barfly       555-7685     1200/300           A  
            <BR>bites        555-1675     2400/1200/300      A  
            <BR>camelot      555-0542     300                C  
            <BR>core         555-2912     1200/300           C  
            <BR>fooey        555-1234     2400/1200/300      B  
            <BR>foot         555-6699     1200/300           B  
            <BR>macfoo       555-6480     1200/300           A  
            <BR>sdace        555-3430     2400/1200/300      A  
            <BR>sabafoo      555-2127     1200/300           C  <BR>  <BR>  
            <BR>档案'shipped':  <BR>Jan  13  25  15 115  <BR>Feb  15  32  24 226  
            <BR>Mar  15  24  34 228  <BR>Apr  31  52  63 420  
            <BR>May  16  34  29 208  <BR>Jun  31  42  75 492  
            <BR>Jul  24  34  67 436  <BR>Aug  15  34  47 316  
            <BR>Sep  13  55  37 277  <BR>Oct  29  54  68 525  
            <BR>Nov  20  87  82 577  <BR>Dec  17  35  61 401  <BR>  
            <BR>Jan  21  36  64 620  <BR>Feb  26  58  80 652  
            <BR>Mar  24  75  70 495  <BR>Apr  21  70  74 514  <BR>  <BR>  <BR>  
            <BR>第二章  简介  <BR>  <BR>    gawk 的主要功能是针对档案的每一行(line)搜寻指定的 patterns  
            <BR>。当一行里有符合指定的 patterns,gawk 就会在此一行执行被指定  
            <BR>的 actions。 gawk 依此方式处理输入档案的每一行直到输入档案结  <BR>束。  <BR>  
            <BR>    gawk 程式是由很多的 pattern 与 action 所组成,action 写在  
            <BR>大括号 { } 里面,一个pattern後面就跟著一个action。整个 gawk 程  <BR>式会像下面的样子:  
            <BR>  <BR>            pattern      {action}  
            <BR>            pattern      {action}  <BR>  
            <BR>    在 gawk 程式里面的规则,pattern 或 action 能够被省略,但  
            <BR>是两个不能同时被省略。如果 pattern 被省略,对於输入档里面的  
            <BR>每一行,action 都会被执行。如果 action 被省略,内定的 action  
            <BR>则会印出所有符合 pattern 的输入行。  <BR>  <BR>  <BR>  <BR>  2.1 如何执行gawk程式  
            <BR>  <BR>    基本上,有2个方法可以执行gawk程式。  <BR>  
            <BR>    □如果 gawk 程式很短,则 gawk 可以直接写在 command line,如下所示:  <BR>  
            <BR>          gawk 'program' input-file1 input-file2 ...  <BR>  
            <BR>      其中 program 包括一些 pattern 和 action。  <BR>  
            <BR>    □如果 gawk 程式较长,较为方便的做法是将 gawk 程式存在一个档案,  
            <BR>      即 patterns 与 actions 写在档名为 program-file 的档案里面,执行  
            <BR>      gawk 的格式如下所示:  <BR>  
            <BR>          gawk -f program-file input-file1 input-file2 ...  
            <BR>  <BR>      gawk 程式的档案不止一个时,执行gawk 的格式如下所示:  <BR>  
            <BR>          gawk -f program-file1 -f program-file2 ... input-file1  
            <BR>               input-file2 ...  <BR>  <BR>  <BR>  
            <BR>  2.2 一个简单的例子  <BR>  
            <BR>    现在我们举一个简单的例子,因为 gawk 程式很短,所以将 gawk 程  
            <BR>式直接写在 command line。  <BR>  
            <BR>    gawk '/foo/ {print $0}' BBS-list  <BR>  
            <BR>实际的 gawk 程式为 /foo/ {print $0}。/foo/ 为 pattern,意思为搜  
            <BR>寻输入档里的每一行是否含有子字串 'foo',如果含有 'foo' 则执行 action。  
            <BR>action 为 print $0,是将现在这一行的内容印出。BBS-list 是输入的档案。  <BR>  
            <BR>    执行完上述指令後,会印出下面的结果:  
            <BR>fooey        555-1234     2400/1200/300      B  
            <BR>foot         555-6699     1200/300           B  
            <BR>macfoo       555-6480     1200/300           A  
            <BR>sabafoo      555-2127     1200/300           C  <BR>  <BR>  
            <BR>  <BR>  2.3 一个较复杂的例子  <BR>  
            <BR>        gawk '$1 == "Feb" {sum=$2+$3}  END {print sum}'  shipped  
            <BR>  <BR>    现在这个例子会将输入档 'shipped' 的第一个栏位与 "Feb" 做比较  
            <BR>,如果相等,则其对应的第2栏位与第3栏位的值会被加到变数 sum。  
            <BR>对於输入档的每一行重复上述的动作,直到输入档的每一行都被处理  
            <BR>过为止。最後将 sum 的值印出。END {print sum} 的意思为在所有的输  
            <BR>入读完之後,执行一次 print sum 的动作,也就是把 sum 的值印出。  <BR>  
            <BR>    下面是执行的结果:  <BR>84  <BR>  
            <BR>                                                              
            <BR>第三章  读取输入档案                                            
            <BR>                                                                  
            <BR>    gawk的输入可以从标准输入或指定的档案里读取。输入的读取单        
            <BR>位被称为”记录”(records),gawk 在做处理时,是一个记录一个记                                                                    (p9 of 46)  
            <BR>录地处理。每个记录的内定值是一行(line),一个记录又被分为多个    
            <BR>栏位(fields)。                                                                  
            <BR>                                                                   
            <BR>                                                                         
            <BR>                                                                  
            <BR>  3.1 如何将输入分解成记录(records)                               
            <BR>                                                                
            <BR>    gawk 语言会把输入分解成记录(record)。记录与记录之间是以             
            <BR>record separator 隔开,record separator 的内定值是表示新一行的   
            <BR>字元(newline character),因此内定的 record separator 使得文字              
            <BR>的每一行是一个记录。                                                    
            <BR>                                                                       
            <BR>    record separator 随著内建变数 RS 的改变而改变。RS 是一个字串,  
            <BR>它的内定值是"\n"。仅有 RS 的第一个字元是有效的,它被当作 record  
            <BR>separator,而 RS 的其它字元会被忽略。                         
            <BR>                                                              
            <BR>    内建变数 FNR 会储存目前的输入档案已颈欢寥〉募锹贾

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -