快速业务通道

gawk详解(一)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-17

gawk详解
gawk能够用很短的程序对文档里的资料做修改、比较、提取、打印等处理.
它不仅是一个编程语言,它还是Linux系统管理员和程序员的一个不可缺少的工具.
gawk是GNU计划下所做的awk,gawk最初在1986年完成,之后不断地被改进、更新.
gawk包含awk的所有功能.

1)gawk的执行方式
gawk程序很短,则可以将gawk 直接写在命令行
例如:gawk ''pattern/action'' input-file1 input-file2 ...
gawk程序较长,则应该将gawk程序存在文件中,用gawk解释器执行
例如:gawk -f script-file input-file1 input-file2 ...
当有多个脚本文件时应当以据执行顺序排列
例如:gawk -f script-file1 -f script-file2 ... input-file1 input-file2 ...

2)模式和动作
在gawk中每一个命令都由两部分组成:模式(pattern)和相应的动作(action).
只要模式符合,gawk就会执行相应的动作.模式部分yin应该用两个斜杠括起来,动作部分用一对花括号括起来.
例如:
/pattern1/ {action1 }
/pattern2/ {action2 }
/pattern3/ {action3 }
其中模式或动作都能够被省略,但是两个不能同时被省略.
如果模式被省略,则对于作为输入的文件里面的每一行,动作都会被执行.
如果动作被省略,则缺省的动作被执行,既显示出所有符合模式的输入行而不做任何的改动.

3)逻辑和数值运算
gawk基本逻辑运算:
== 相等
!= 不相等
> 大于
< 小于
>= 大于等于
<= 小于等于
例如:gawk ''$4 > 100'' testfile (显示文件testfile 中那些第四个字段大于100的记录)
gawk基本数值运算符:
加法
- 减法
* 乘法
/ 除法
^ 乘方
% 求模
例如:gawk ''{print $4/2}'' testfile (显示第4个字段被2除的结果)
在gawk中,运算符的优先级和一般的数学运算的优先级一样.如果不确定的话可以用小括号改变优先次序.

4)内部函数
gawk中有各种的内部函数,现在介绍如下:
随机数和数学函数
sqrt(x) 求x的平方根
sin(x) 求x的正弦函数
cos(x) 求x的余弦函数
log(x) 求x的自然对数
int(x) 求x的整数部分
rand() 求0和1之间的随机数
srand(x) 将x设置为rand()的种子数

字符串的内部函数
index(find,in) 在字符串"find"中寻找"in"第一次出现的位置,返回值是字符串"in"出现在字符串find"里面的位置.如果没有超找到则返回0.
length(string) 求出string的长度.
match(string,regexp) 在字符串string中寻找符合regexp的最长、最靠左边(正则表达式默认是贪婪的)的子字符串.
返回值是regexp在string的开始位置,即index值.
match函数将会设置系统变量RSTART等于index的值,系统变量RLENGTH等于符合的字符个数.如果不符合,则会设置RSTART为0、RLENGTH为-1.
sprintf(format,expression1,. . . )和C语言的printf类似,但是sprintf并不显示,而是返回字符串.
sub(regexp,replacement,target) 在字符串target中寻找符合regexp的最长、最靠左的地方,以字串replacement代替最左边的regexp.
gsub(regexp,replacement,target) 与sub类似.在字符串target中寻找符合regexp的所有地方,以字符串replacement代替所有的regexp.
substr(string,start,length) 返回字符串string 的子字符串,这个子字符串的长度为length,从第start个位置开始.
如果没有length ,则返回的子字符串是从第start 个位置开始至结束.
tolower(string) 将字符串string的大写字母改为小写字母.
toupper(string) 将字符串string的小写字母改为大写字母.

I/O的内部函数
close(filename) 将输入或输出的文件filename关闭.
system(command) 此函数允许用户执行操作系统的指令,执行完毕后将回到gawk程序.

5)格式化输出
借用C语言的格式化输出指令,可以让gawk的输出形式更为多样.这时,应该用printf而不是print.
例如:gawk ''{printf "%5s likes this language\n",$2 }'' testfile

p r i n t f中的%5s 部分告诉gawk 如何格式化输出字符串,也就是输出5个字符长.它的值由
printf 的部分指出,在此是第二个字段.\ n是回车换行符.
gawk语言支持的其他格式控制符号如下:
c如果是字符串,则显示第一个字符;如果是整数,则将数字以ASCII字符的形式显示.
d显示十进制的整数.
i显示十进制的整数.
e将浮点数以科学记数法的形式显示.
f将数字以浮点的形式显示.
g将数字以科学记数法的形式或浮点的形式显示.数字的绝对值如果大于等于0.0001则以浮点的形式显示,否则以科学记数法的形式显示.
o显示无符号的八进制整数.
s显示一个字符串.
x显示无符号的十六进制整数.1 0至1 5以a至f表示.
X显示无符号的十六进制整数.1 0至1 5以A至F表示.
%它并不是真正的格式控制字符,% %将显示%.
使用这些格式控制字符时,可以在控制字符前给出数字,以表示你将用的几位或几个字符.

换码控制符
\a 警告或响铃字符.
\b 后退一格.
\f 换页.
\n 换行.
\r 回车.
\t Ta b.
\v 垂直的tab.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号