awk是一种用于处理文本的编程语言工具,一种模式扫描和处理语言。

使用类似于C的语法,并在很多方面类似于shell编程语言。awk支持流程控制、数学运算、进程控制语句设置内置的变量和函数。

awk不会修改输入文件的内容。

awk命令的格式

格式1:awk [option] 'program-statements' [input-file]...

执行命令行上的awk程序语句,若一行上有多个awk语句,使用分号(;)间隔

格式2:awk [option] -f program-file [input-file]...

执行脚本文件program-file中的awk语句

常用参数

-F fs:在awk中,默认的字段分隔符一般是空格符或TAB,在-F后面设置字段分隔符

-v var=val:对变量var赋初值为val,可以是内置变量也可以是自定义变量

awk中的每一个语句由两部分组成:模式(pattern)和相应的动作(actions)。只要模式匹配,awk就会执行相应的动作。动作部分由一个或多个命令、函数、表达式组成,其间由换行符或分号隔开,并位于大括号内。

1.pattern和{actions}可以省略,但不能同时省略

2.pattern省略时,对所有的输入行执行{actions}

3.{actions}省略时,打印匹配行

模式部分可以是:

1./regular expression/:扩展的正则表达式

2.relational expression:关系表达式

3.pattern1,pattern2:范围模式,匹配行的范围

4.BEGIN:指定第一条输入记录被处理之前要执行的动作,通常在此设置全局变量

5.END:指定最后一条记录被读取之后要执行的动作,通常在此输出统计数据

动作部分可以是:

1.变量或数组赋值

2.输入/输出语句

3.内置函数和自定义函数

4.流程控制语句

awk命令的一般形式

awk 'BEGIN {actions}

  pattern1 {actions}

  ...

  pattern2 {actions}

  END {actions}' input-file

步骤1:

如果存在BEGIN,首先执行它指定的actions

步骤2:

从输入中读取一行,称为一条输入记录

步骤3:

将读入的记录分割成数个字段,将第一个字段放入变量$1,第二个放入变量$2,以此类推。$0表示整条记录。字段分隔符可以通过选项-F指定,否则使用默认分隔符。

步骤4:

把当前输入记录依次与每一个语句中pattern比较:如果匹配,就执行对应的actions;如果不匹配,就跳过对应的actions,直到完成所有的语句。

步骤5:

当一条输入记录处理完毕后,awk读取输入的下一行,重复处理直到所有输入处理完毕。

步骤6:

如果输入是文件列表,按顺序处理列表中的每个文件。

步骤7:

处理完所有输入后,若存在END,则执行相应的actions。

awk常用的内置变量

NF      当前记录中的字段数

NR      当前记录数

FS      字段分隔符(默认是空格)

RS      记录分隔符(默认是一个换行符)

OFS     输出字段分隔符

ORS     输出记录分隔符

IGNORECASE  如果为真,则进行忽略大小写的匹配

posted on 2010-11-04 00:43  龍蝦  阅读(1881)  评论(0编辑  收藏  举报