首页 > 系统 > 其他 >

awk基础

2014-02-24

1 awk是很好的文本处理工具,简化了一般文本处理的工作。使用awk有以下三种方式: (1) 使用awk命令行 (2) 使用-f选项,后面接上文件名 (3) 使用命令解释器 ! bin

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)将字符串与正则表达式匹配,如果匹配,返回索引&#20540;,如果不匹配,返回0.

index(string1,string2)在字符串string1中查找看是否有string2

split(string,array)是将字符串按内建分隔字符FS分割,并把结果存入array,

7.数&#20540;函数

数&#20540;函数包括atan2(y,x)返回y/x的反正切,&#20540;介于-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&#43;&#43;)

printf(“%.5”,rand())

print “”

}’

sleep 1

done

相关文章
最新文章
热点推荐