一、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,表示整行的数据。