Awk的前世今生
Awk是以它的三位作者(Aho, Kernighan, and Weinberger)的Family name的首字符。最初在System V上。GNU在其基础上,添加了额外了特性形成了
gawk所以下文所讨论的awk如无特别说明,指的都是gawk。awk是一门模式扫描和处理语言。所以其语法上可能和shell的语法不同。所以awk也可以理解为是一个脚本解释器,类似shell
#!/bin/awk
和#!/bin/bash
Awk的选项
-F fs
推荐一个在线正则表达式生成工具txt2re
这可能是你能awk
被用的最多的选项了,使用作为分隔符,需要注意的是 -F 选项支持正则。
awk上的变量,记录以及域
变量
在高级语言中变量先声明后使用,而awk则简化了
这一过程。无需声明,直接使用就行。直接使用带来一个问题,变量声明在前,所以变量的类型得以确定,脚本语言往往是弱类型的语言。只能从使用上看出数据类型。
记录
通常,记录是通过换行符分隔
(可以通过变量RS
手工指定)。
域
域可以类比数据库中的列
的概念。默认是通过空白符(space,tab,newline)分隔。(可以通过设置变量FS执行). 如果一行的域大小为NF如果n>NF那么$n为 null-string.
awk程序执行
pattern { action statements }
function name(parameter list{
statements
}