shell脚本学习笔记14-awk
一、awk介绍
awk是一种可以处理数据、产生格式化报表的语言,功能十分强大。awk 认为文件中的每一行是一条记录 记录与记录的分隔符为换行符,每一列是一个字段 字段与字段的分隔符默认是一个或多个空格或tab制表符。
awk的工作方式是读取数据,将每一行数据视为一条记录(record)每条记录以字段分隔符分成若干字段,然后输出各个字段的值。
二、awk语法
awk options '[BEGIN]{program}[END]' [FILENAME]

三、awk基本应用

3.1)awk对字段的提取
$0 表示整行文本
$1 表示文本行中的第一个数据字段
$2 表示文本行中的第二个数据字段
$N 表示文本行中的第N个数据字段
$NF 表示文本行中的最后一个数据字段

3.2)命令选项
-F:指定字段与字段的分隔符

-f file:如果awk命令是日常重复工作,而又没有太多变化,可以将程序写入文件,每次使用-f调用程序文件就好

-v:定义变量

3.3)awk对行的提取
提取的方法:1.通过行号;2.通过正则匹配
NR:指定行号

3.4)awk对字符串提取

四、awk程序的优先级
关于awk程序的执行优先级,BEGIN是优先级最高的代码块,是在执行PROGRAM之前执行的,不需要提供数据源,因为不涉及到任何数据的处理,也不依赖与PROGRAM代码块;PROGRAM是对数据流干什么,是必选代码块,也是默认代码块。所以在执行时必须提供数据源;END是处理完数据流后的操作,如果需要执行END代码块,就必须需要PROGRAM的支持,单个无法执行。

五、awk高级应用
awk除了可以定义变量外,还可以定义数组,进行运算,流程控制等等。
5.1)awk定义变量和数组
定义变量

定义数组,数组名[索引]=值

5.2)awk运算
比较运算,为真用1表示,为假用0表示

数学运算

逻辑运算

匹配运算

5.3)awk环境变量


5.4)流程控制
if判断语句

for循环语句

while循环语句

do...while循环语句

循环控制语句break


浙公网安备 33010602011771号