gawk的使用方法
本文出自: 作者: (2002-03-02 14:01:59)
第一章 前言
第二章 简介
第三章 读取输入档案
第四章 印出
第五章 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 J
un 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 程
本文出自: 作者: (2002-03-02 14:01:59)
第一章 前言
第二章 简介
第三章 读取输入档案
第四章 印出
第五章 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 J
un 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 程