第十章awk工具编程.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:13 大小:408KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第十章awk工具编程.pdf

第十章awk工具编程.pdf

预览

免费试读已结束,剩余 3 页请下载文档后查看

15 金币

下载此文档

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

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:数值运算符号:●+加法运