1.awk是很好的文本处理工具,简化了一般文本处理的工作。使用awk有以下三种方式:
(1) 使用awk命令行
(2) 使用-f选项,后面接上文件名
(3) 使用命令解释器
#!/bin/awk –f
然后使用chmod 命令给这个脚本文件加上可执行权限,就可以调用这个脚本了
2.awk中的变量
(1)标量变量
awk的变量不需要先做声明,它们会在程序里第一次使用的时候自动建立,初始值为空字符串,需要数值时,它被视为零。awk变量名必须是以ASCII字母或者下划线开始,后面接字母数字下划线,变量必须区分大小写,abc,Abc和ABC是不同的变量,一般,局部变量用小写,全局变量首字母大写,内置的变量全部大写。awk常用的内置变量有:FILENAME(当前文件名称),FNR(当前输入文件记录数)FS(字段分隔字符)NF(当前记录的字段数)NR(当前的记录数)OFS(输出字段分隔符)ORS(输出记录分隔符)RS(输入记录分隔符)
(2)数组变量
awk只为实际存在的元素分配内存,如a[1]=1,a[100]=2,数组中可以没有a[2]至a[99]这些项,数组也不会为他们分配内存。大多数编程语言要求数组的元素必须是相同的类型,但awk数组可以有不同的元素类型。
3.awk的语句
(1)条件语句:
if (expr)
statement
elif (expr)
statement
else
statement
(2)循环语句:
while循环:
while(expr)
statement
do ...while 循环:
do
{
statement
}while(expr)
for 循环;
for(expr1;expr2;expr3)
statement
for循环:
for(key in array)
statement
4.用户控制的输入可以使用getline,getline var可以从当前输入文件中,读取下一条记录,存入var,cmd|getline var用于从命令cmd中读取下一条记录,并存入var,举例如下:
(1)print “input a number”
getline answer
print “you have input”,answer
(2)“data”|getline now
close(“data”)
print “the current time is ”,now
输出重定向可以用print “hello world”>file
如果以追加的方式写到文件,可以用 print “hello world”>>file
执行外部的程序可以用system,如system(“cat” tempfile),可以用于打开一个文件
5.用户自定义函数可以采用以下的形式:
function name(<参数列表>)
{
statement;
}
例如递归的方法求最大公约数
function gcd(x,y r)
{
x=int(x)
y=int(y)
r=x%y
return (r==0)?y:gcd(y,r)
}
以上的函数可以递归的求解最大公约数
6.字符串函数
substr(string,start,len)可以返回从start开始,长度为len的字符串
tolower(string),toupper(string)可以将字符串转换为小写或者大写的形式
match(string,re)将字符串与正则表达式匹配,如果匹配,返回索引值,如果不匹配,返回0.
index(string1,string2)在字符串string1中查找看是否有string2
split(string,array)是将字符串按内建分隔字符FS分割,并把结果存入array,
7.数值函数
数值函数包括atan2(y,x)返回y/x的反正切,值介于-pi到pi之间
cos(x) sin(x) int(x) log(x) rand() exp(x) sqrt(x) srand(x) (产生随机数的种子)
产生随机数的程序:
for k in 1 2 3 4 5
do
awk ‘ BEGIN {srand()
for (i=1;i<6;i++)
printf(“%.5”,rand())
print “”
}’
sleep 1
done
原文:http://blog.csdn.net/u011608357/article/details/19764223