初识awk

    一、awk是什么?

    awk是什么?awk已经不仅仅是一个简单的工具,其是一门强大的程序语言,拥有程序语言的特性,如拥有条件、循环等结构语句等,其三位创始人把他定义为:样式扫描和处理语言。。

    AWK是贝尔实验室1977年搞出来的文本出现神器,今年2015年,已经有38个年头,起名字是由三位创始人: Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符组成。


    二、awk怎么工作

       如下图所示为awk的工作流程,其主要分为如下几部:

        1、若有BEGIN块,则先执行BEGIN块中的内容;

        2、从文本文件中读取一行;

        3、将读取的一行进行处理;

        4、重复执行2、3步骤,直到文件结尾;

        5、最后,若有END块,则执行END块中的内容


    三、一个简单的awk实例

awk命令格式

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...

短程序通常是直接在命令行上运行,长程序则通过 -f 选项指定。
如果没有指定文件名,则awk会读取标准输入。

—   是特殊选项,指出awk本身并没有更进一步的命令行选项,任何接下来的选项都可以被程序使用。
-F  选项用来重新定义默认字段分隔符号,且一般惯例把它作为第一个命令行选项。
-v  选项从shell传递参数给awk,此选择一般要在最前面。

一个简单的例子,假设你有一个名为 test.txt 的文件,其中包含员工的姓名、薪资(美元/小时)以及小时数,一个员工一行数据,如下所示:

Beth	4.00	0
Dan	3.75	0
kathy	4.00	10
Mark	5.00	20
Mary	5.50	22
Susie	4.25	18

现在你想打印出工作时间超过零小时的员工的姓名和工资(薪资乘以时间)。输入这个命令行就可以了:

awk '{if($3 > 0) print $1, $2*$3}' test.txt

其中$1 $2 $3 分别表示 awk 处理后的第一、二、三列的数据,还有一个 $0,表示整行的数据。



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
永久连接: http://www.nfvschool.cn/?p=129
标签:

发表评论