具备C语言的能力下,快速学会使用AWK为了做些什么
2017-10-21 12:54
309 查看
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
输入awk的文本首先会被按“行”划分为很多条"记录",每一行表示一条记录,每一行再由分隔符划分成很多个“域”,分隔符默认是空格符,也可以通过命令参数-F来指定
比如 awk -F ';'。
每一条记录会被awk的{action script}处理一次,分割出来的“域”其实就是从当前被action script处理的行提取出来的索引,第一个域用$1索引,第二个用$2,以此类推,其中$0表示对一整行进行索引。
我觉得把awk理解为虚拟机程序会更合适,其中 -F和“输入的文本文件路径”之类的可以可以理解为是虚拟机的参数配置,
而虚拟机执行的脚本就是awk中用单引号引起来的脚本。
一个完整的awk虚拟机脚本应该包含几个部分,脚本的初始化代码,脚本的循环行处理代码,脚本的结束代码。
比如 awk 'BEGIN{ print "init..."} {print "every line have to do this" } END{ print "program have ending " }'
而且编程的语法类似于C语言,甚至比C语言更简约。
我们甚至还可以利用正则表达式从输入的文本过滤出我们需要行进行编程处理(而不是所有行都处理),比如
awk 'BEGIN{ print "init..."} / 双斜杠里面是正则表达式 /{print "every line have to do this" } END{ print "program have ending " }'
那么我们能用awk干嘛?
1.统计文档
2. 对文档做复杂的查询
3. 修改和编辑文档内容。读取文档的内容,利用if语句处理特定的行,然后重定向到新文档
4.操作数据库(这个具体自己找相关资料吧)。
5.简洁的浏览文件,过滤出文档中你需要的信息。
输入awk的文本首先会被按“行”划分为很多条"记录",每一行表示一条记录,每一行再由分隔符划分成很多个“域”,分隔符默认是空格符,也可以通过命令参数-F来指定
比如 awk -F ';'。
每一条记录会被awk的{action script}处理一次,分割出来的“域”其实就是从当前被action script处理的行提取出来的索引,第一个域用$1索引,第二个用$2,以此类推,其中$0表示对一整行进行索引。
我觉得把awk理解为虚拟机程序会更合适,其中 -F和“输入的文本文件路径”之类的可以可以理解为是虚拟机的参数配置,
而虚拟机执行的脚本就是awk中用单引号引起来的脚本。
一个完整的awk虚拟机脚本应该包含几个部分,脚本的初始化代码,脚本的循环行处理代码,脚本的结束代码。
比如 awk 'BEGIN{ print "init..."} {print "every line have to do this" } END{ print "program have ending " }'
而且编程的语法类似于C语言,甚至比C语言更简约。
我们甚至还可以利用正则表达式从输入的文本过滤出我们需要行进行编程处理(而不是所有行都处理),比如
awk 'BEGIN{ print "init..."} / 双斜杠里面是正则表达式 /{print "every line have to do this" } END{ print "program have ending " }'
那么我们能用awk干嘛?
1.统计文档
2. 对文档做复杂的查询
3. 修改和编辑文档内容。读取文档的内容,利用if语句处理特定的行,然后重定向到新文档
4.操作数据库(这个具体自己找相关资料吧)。
5.简洁的浏览文件,过滤出文档中你需要的信息。
相关文章推荐
- [置顶] Android热更新初探,Bugly热更新的集成和使用(让你的应用轻松具备热更新能力)
- C语言中使用类似awk的功能
- 关于快速学会使用 gitoschina
- 使用keepalived和HaVip搭建具备高可用能力的SNAT网关
- 学会快速装系统 图解Norton Ghost使用
- 如何快速学会使用协议
- VMwarePro 12教程 简洁明快不装逼 快速学会使用虚拟机
- 绘制流程图使用技巧:快速学会怎么画流程图
- 使用 awk 命令行快速分析 web 访问日志
- 使用 awk 命令行快速分析HTTP Server 访问日志
- 使用 awk 命令行快速分析 IBM HTTP Server 访问日志
- 使用 awk 命令行快速分析 accesslog访问日志
- Cacti完全使用手册 ( 让你快速个性化使用Cacti ) 转载为了自己学习
- 写一个Spring框架的整体过程(快速学会使用Spring框架)
- 【rzxt】教你如何快速学会Win 7键盘使用方法
- 使用 awk 命令行快速分析 IBM HTTP Server 访问日志
- 简单两步快速学会使用Mybatis-Generator自动生成entity实体、dao接口和简单mapper映射(用mysql和oracle举例)
- 快速学习C语言中for循环语句的基本使用方法
- 简单三步快速学会使用Mybatis-Generator自动生成entity实体、dao接口以及mapper映射文件(postgre使用实例)