目录
前言
awk:Aho, Weinberger, Kernighan,报告生成器,格式化文本输出,GNU/Linux发布的AWK目前由自由软件基金会(FSF)进行开发和维护,通常也称为 GNU AWK
有多种版本:
AWK:原先来源于 AT & T 实验室的的AWK
NAWK:New awk,AT & T 实验室的AWK的升级版
GAWK:即GNU AWK。所有的GNU/Linux发布版都自带GAWK,它与AWK和NAWK完全兼容
GNU AWK 用户手册文档。
在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行分成多个字段然后进行处理。AWK信息的读入也是逐行指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。
gawk:模式扫描和处理语言,可以实现下面功能。
vim : 是将整个文件加载到内存中再进行编辑,受限内存。
awk(语言) : 读取一行处理一行。
一、awk工具介绍
1.功能强大的编辑工具
2.无交互的情况下实现复杂的文本操作
3.命令格式
(1)awk 选项 '模式或条件 { 编辑指令 }' 文件1 文件2
(2)awk -f 脚本文件 文件1 文件2
格式:
awk [options] 'program' var=value file...
awk [options] -f programfile var=value file...
说明:
program通常是被放在单引号中,并可以由三种部分组成
BEGIN语句块
模式匹配的通用语句块
END语句块
pattern{action statements;..}
pattern: 决定动作语句何时触发及触发事件,比如: BEGIN, END,正则表达式等
action statements: 对数据进行处理,放在{}内指明,常见: print, printf
常见选项:
-F“ 分隔符”指明输入时用到的字段分隔符,默认的分隔符是若千个连续空白符
-v var=value变量赋值
awk [选项] '模式条件{操作}'文件1文件2....
awk -f|-v 脚本文件 文件1 文件2.....
二、awk工作原理
逐行读取文本,默认以空格为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。awk 执行结果可以通过 print 的功能将字段数据打印显示。
三、awk内置变量
FS:指定每行文本的字段分隔符,缺省为空格或制表符(tab)。与"-F"作用相同 -F -FS一起使用-F的优先级高
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段(第n列)
FILENAME:被处理的文件名
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n
OFS 输出字段的分隔符,默认也是空格
ORS 输出分割符,默认也是换行符
FNR 读取文件的记录数(行号),从1开始,新的文件重新从1开始计数
四、自定义变量
综合应用