AWK是一种处理文本文件的语言,是一个强大的文件分析工具。 它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。 工作原理:: 当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出。 如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。 逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令。
2. 生命周期
grep,sed和awk都是读一行处理一行,直到处理完成
-
接收一行作为输入
-
把刚刚读入进来得到文本进行分解
-
使用处理规则处理文本
-
输入一行,赋值给$0,直至处理完成
-
把处理完成之后的所有数据交给END{}来再次处理
3. 内置变量
内置变量 |
功能 |
NF |
当前处理的行的字段个数(就是:有多少列) |
NR |
当前处理的行的行号(就是:有多少行) |
FNR |
读取文件的记录数(行号),从1开始,新的文件重新从1开始计数 |
$0 |
当前处理的行的整行内容(就是:表示一行的内容) |
$n |
当前处理行的第n个字段(就是:第n列) |
FILENAME |
被处理的文件名 |
FS |
指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F ) |
OFS |
输出字段的分隔符,默认也是空格 |
RS |
行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“ |
ORS |
输出分割符,默认也是换行符 |