预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十章awk工具编程 我们在genesis编程中,awk工具会经常用到,awk工具很强大,它不仅可以从一个很大的文本文件中抽取 数据包,还可以进行算术运算、比较运算等等很多功能,应该说awk是一种比较完整的编程语言,本章我 们就一一介绍这个较为强大的工具。 作者:刘才林完成于2008/3月 第十章awk工具编程 10.1:awk简介: awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一 个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是 linux/unix下的一个强大编程工具。它可以在命令行中使用,但更多是作为脚本来使用。awk的处理 文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并 在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果 没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它 的作者是三个人,分别是AlfredAho、BrianKernighan、PeterWeinberger。 Awk后来在Linux系统上发展为gawk,在unix系统上发展为nawk,而在genesis2000编程的 windows系统中,我们要应用awk95,它们之间也有一些区别,如果你编写的genesis2000程序要应用 于多个系统,请注意您的awk程序是否能在各个系统中运行,并且定义不同系统为不同的awk,因为 最早的awk很多功能都不能实现。下面的讲解以gawk为主,但我们简称为awk,请大家不要混淆概念。 10.2:awk命令格式和选项: 10.2.1:awk的语法有两种形式: awk[options]'script'var=valuefile(s) awk[options]-fscriptfilevar=valuefile(s) 10.2.2:awk的常用选项: ●–Ffs:使用fs作为输入记录的字符分隔符,如果省略该选项,awk使用环境变量 IFS的值。 ●–ffilename:从文件filename中读取awk_scripts。 ●–v为awk_script设置变量。 10.3:awk的调用方式: awk的调用方式可分为三种: (1):直接写成命令行(在awk程序很短的情况下) (2):将awk_scripts放入脚本并以#!/bin/awk作为开头,给予它可执行权限,然后执行程 序。 (3):将awk程序插入一个单独脚本文件,然后用:awk–f进行调用。 10.4:模式和动作: 任何awk语句都由模式和动作组成。在一个awk脚本中可能有许多语句。模式部分决定动作语句何 时触发及触发事件,处理即对数据进行的操作,如果省略模式部分,动作将时刻保持执行状态;如果 动作被省略,则缺省的动作被执行,既显示出所有符合模式的输入行而不做任何的改动。 10.4.1:模式: 模式可以是任何条件语句或复合语句或正则表达式。模式包括两个特殊字段BEGIN和END。 使用BEGIN语句设置计数和打印头。BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作 依据输入文件开始执行。END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标 志。如果不特别指明模式,awk总是匹配或打印行数。 10.4.2:动作: 动作都在{}内,主要分为四个部分: ●变量或数组赋值: ●输出命令: ●内置函数: ●控制流命令: 10.4.3:范例: 作者:刘才林完成于2008/3月 第十章awk工具编程 ●awk'/genesis/'/etc/passwd 上面的程序在/etc/passwd中找寻符合genesis的记录,并显示出来,该例子中没有动作,所以 缺省的动作被执行。 ●awk'/genesis/{print$1}'304.txt 以上程序是在文件304.txt中查找包含genesis字符串的记录,并且打印这些记录的第一行。 10.5:运算符号: 10.5.1:比较运算: 下面我们先列出awk的比较运算符号: ●==相等 ●!=不等于 ●<小于 ●>大于 ●<=小于等于 ●>=大于等于 awk可以进行带有小数点的比较,下面我们举例说明: echo2.33.2|awk‘{if($1<$2)print1;elseprint2}’ 则结果会显示1。 10.5.2:逻辑运算式: 下面我们列出逻辑运算符号: ●||逻辑或 ●&&逻辑与 ●!逻辑否 10.5.3:正则表达式符号: ●~匹配正则表达式。 ●~!不匹配正则表达式。 10.5.4:数值运算符号: ●+加法运