gawk学习笔记
时间:2009-05-23 来源:sjhf
gawk语法:
a、gawk [模式] [{动作}] 文件 #模式和动作直接在命令行给出
b、gawk –f gawk程序 文件 #模式和动作放在gawk程序中调用
注:gawk基本用法是找到文件中与模式相匹配的行,对其采取相应的动作。a为简单用法,b用于处理复杂一些的gawk功能。
模式和动作均为可选项。
若不指定模式,文件中的每一行都将被匹配;若不指定动作,gawk将对所有匹配行进行默认print操作,即输出到标准输出(屏幕)。后面的例子均以文件cars做为参数,文件中所有空白字符都由单个TAB组成(不包含任何空格)。
$ cat cars
plym fury 1970 73 2500 chevy malibu 1999 60 3000 ford mustang 1965 45 10000 volvo s80 1998 102 9850 ford thundbd 2003 15 10500 chevy malibu 2000 50 3500 bmw 325i 1985 115 450 honda accord 2001 30 6000 ford taurus 2004 10 17000 toyota rav4 2002 180 750 chevy impala 1985 85 1550 ford explor 2003 25 9500
缺省模式:一个最简单的gawk命令如下:
$ gawk ‘{print}’cars
…….
上面的命令不指定模式,它匹配所有行并将他们输出到屏幕。$ gawk ‘/chevy/’cars
$ gawk ‘/chevy/ {print $3, $1}’ cars
plym fury 1970 73 $ 2500chevy malibu 1999 60 $ 3000ford mustang 1965 45 $ 10000volvo s80 1998 102 $ 9850ford thundbd 2003 15 $ 10500chevy malibu 2000 50 $ 3500bmw 325i 1985 115 $ 450honda accord 2001 30 $ 6000ford taurus 2004 10 $ 17000toyota rav4 2002 180 $ 750chevy impala 1985 85 $ 1550ford explor 2003 25 $ 9500
printf对与以整齐的格式处理报告很有用。
if、while、for等控制流结构均可以用于gawk中,读者可以自行验证,这里不再举例(前面的例子作者均实际验证通过)。gawk还可以使用协进程进行网络数据交换等更高级的功能,本文不涉及这部分内容。
本人也经常在各linux论坛搜索学习资料,感觉网上的资料很多同时也比较杂,不够系统。系统学习linux管理及编程的书籍还是需要的,再此推荐一下我正在读的《Linux命令、编辑器与Shell编程》
http://licong.blog.51cto.com/542131/151976
最近系统学习了一下linux下shell编程,关于bash脚本的内容太多,以后再慢慢整理。先将gawk的学习做一下笔记,方便以后查阅。本文中的原理及例子均出自Mark G.Sobell所著《Linux命令、编辑器与Shell编程》(杨明军、王凤芹译)
gawk(GNU awk)工具是一种模式扫描和处理语言,它搜索一个或多个文件,以查看这些文件中是否存在匹配指定模式的记录(通常是文本)。每次发现时,它通过执行动作的方式处理文本。使用gawk可以生成报告或者过滤文本,gawk的很多结构来自C语言。 Gawk工具是UNIX awk的GNU版。为了方便起见,很多linux系统将/bin/awk链接到/bin/gawk,这样用户可以使用两者中的任何一个来运行程序。 |