awk与正则表达式
awk倾向于一行当中分成数个字段来处理,处理完一行中的字段后,自动处理下一行的字段,直到文本结束。
注:awk适合进行小型的数据处理
awk [options] -f scriptfile var=value file(s)
awk [options] 'script' var=value file(s)
-F (fs) fs指定输入的分隔符,fs可以是字符串或正则表达式
注: 默认的分隔符为空格
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scriptfile 从脚本文件中读取awk命令
awk 脚本基本结构
awk 'BEGIN{ print "start" } pattern{ commands} END{ print "end"}' file
一个awk脚本通常由:BEGIN语句块,能够使用模式通用块,END语句块3部分组成,三部分是可选的。
注: 脚本通常用单引号或双引号引起来
awk的工作原理
第一步:执行BEGIN{ commands } 语句块中的语句;
第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{commands} 语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到这个文件全部结束
第三部:当读至输入流末尾时,执行END{commands}语句块
awk的内置变量
$n 当前记录的第n个字段; $0 执行过程中当前行的文容 ;NF 表示字段数,$NF表示最后一列; NR 表示记录数,相当于当前的行号; OFS 输出字段分隔符(默认是一个空格,在脚本中使用) ; RS 记录分隔符 (默认换行);ORS 输出记录分隔符(默认是换行)
将外部变量值传递给awk 借助 -v
例: VAR=100000
echo | awk -v VARIABLE=$VAR '{print VARIABLE} '
注:awk中除内部变量外,其余编程可以仿照 c 语言格式