处理单元

假设我们要处理的数据文本如下:

chapter_1_3-1.data

A 1000 1/3
B 23 2/3 middle
C 782 3/3

记录

chapter_1_3-1.awk

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,在上面的例子中一个数据行就是一条记录。

chapter_1_3-2.awk

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的语法要点

results matching ""

    No results matching ""