处理单元
假设我们要处理的数据文本如下:
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的语法要点