awk学习笔记一-结构

来自:http://doc.lazyhack.net/awk.htm

awk程序的主要结构:

awk ‘Pattern1 { Actions1 } Pattern2 { Actions2 } ...Pattern3 { Actions3 }’ filename1 ..filenameN

awk 会先判断该Pattern 的值,  Pattern 值为true awk将执行该 Pattern 所对应的 Actions.反之,  Pattern 之值不为 true, awk将不执行该 Pattern所对应的 Actions.

例如:

awk '50 > 23 {print "Hello! The word!!" } "banana" ~ /123/ { print "Good morning !" } ' test

解析:pattern 50>23 返回值为true,所以执行对应的actionsprint "Hello! The word!!";而patternbanana" ~ /123/返回结果为false所以后面的actions不会执行,最后的输出结果为Hello! The word!!,

有时语法 Pattern { Actions }, Pattern 部分被省略,只剩 {Actions}.这种情形表示 "无条件执行这个 Actions".

有时语法Pattern { Actions }中,{Actions}部分被省略,是剩下Pattern.这种情况同Pattern{print $0},即打印整条记录

Awk的变量

以下面的文件emp.dat来了解awk相关术语

A125 Jenny 100 210

A341 Dan 110 215

P158 Max 130 209

P148 John 125 220

A123 Linda 95 210

件中各字段依次为 员工ID, 姓名, 薪资率, 实际工时. ID中的第一码为部门识别码. "A","P"分别表示"组装""包装"部门.

1Awk字段变量

字段变量

含义

$0

其内容为目前 awk 所读入的数据行(记录). 类型字符串

$1

$0 上第一个字段的数据.

$2

$0 上第二个字段的数据.

...

其余类推

每读取一行数据(记录),awk会将改行记录复制给$0,当$0改变时awk会重新分析$0的字段情况,并将各个字段依次赋值给$1,$2,$3…

2Awk的内建变量(Built-in Variables)

awk 提供了许多内建变量可使用这些变量来取得相关信息.常见的内建变量有 :

内建变量

含义

NF (Number of Fields)

为一整数其值表示$0上所有的字段数目.

NR (Number of Records)

为一整数其值表awk已读入的数据行数目.

FILENAME

awk正在处理的数据文件文件名

例如:awk从文件emp.dat 中读入第一笔数据行

A125 Jenny 100 210                                                                                                    

$0: A125 Jenny 100 210

$1: A125

$2Jenny

$3100

$4210

NF:4

NR:1

FILENAMEemp.dat 

注意:awk中的变量引用不需要使用$parameter$0,$1…用来引用各个字段

你可能感兴趣的:(awk,awk变量,休闲,awk学习,awk手册)