awk基础

来源:互联网 发布:打新基金 知乎 编辑:程序博客网 时间:2024/06/06 03:43

1.awk是很好的文本处理工具,简化了一般文本处理的工作。使用awk有以下三种方式:

(1)       使用awk命令行

(2)       使用-f选项,后面接上文件名

(3)       使用命令解释器

#!/bin/awk –f

然后使用chmod 命令给这个脚本文件加上可执行权限,就可以调用这个脚本了

2.awk中的变量

1)标量变量

    awk的变量不需要先做声明,它们会在程序里第一次使用的时候自动建立,初始值为空字符串,需要数值时,它被视为零。awk变量名必须是以ASCII字母或者下划线开始,后面接字母数字下划线,变量必须区分大小写,abc,AbcABC是不同的变量,一般,局部变量用小写,全局变量首字母大写,内置的变量全部大写。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可以从当前输入文件中,读取下一条记录,存入varcmd|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的反正切,值介于-pipi之间

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

0 0
原创粉丝点击