处理单元
假设我们要处理的数据文本如下:
A 1000 1/3
B 23 2/3 middle
C 782 3/3
记录
BEGIN{ } { print($0); } END{ }
$awk -f chapter_1_3-1.awk chapter_1_3-1.data
A 1000 1/3
B 23 2/3 middle
C 782 3/3
默认情况下awk在扫描文本时以\n
来分隔记录,一条记录就是在程序body循环时的当前处理对象,对应的程序引用是$0
,在上面的例子中一个数据行就是一条记录。
域
BEGIN{ } { print("域数量:"NF); print("域3:"$3); } END{ }
$awk -f chapter_1_3-2.awk chapter_1_3-1.data
域数量:3
域3:1/3
域数量:4
域3:2/3
域数量:3
域3:3/3
域是相对于记录而言的,对于每一条记录,awk默认按照空格对处理文本划分成不同的数据内容,称做域,通过内置变量NF
可以得到当前记录域个数,对于域的程序引用计数从1开始,比如通过$3
就可以得到第三个域的数据内容。
掌握了以上概念后基本上也就掌握了awk 60%的内容,后面的章节让我们来简单点出一下awk的语法要点