做测试工作,经常要分析日志,有的时候活儿还很脏很累,比如抽取符合某些pattern的行,重新格式化等等。有的时候,我们需要也创造一些测试用数据文件。基于上述两种原因,在Unix Like 系统上,一些古老的字处理程序就显得非常有用了,这些古老的程序包括 grep,sed,awk等,它们不用安装(已经成为了操作系统的标准),使用方便,效率很高,能直接跟管道,重定向之类的shell操作并用,能嵌入到shell脚本中处理复杂情况。这些特性能够帮助测试人员迅速完成文本相关工作。每当我看到有测试人员还在傻傻的用UltraEdit从ftp上download大文本到本地,然后费劲的打开,修改,写程序解析。就忍不住要跟他们说:学学直接在shell下完成工作吧,花些时间学学vi,学学这些字符操作的工具,学学写shell吧,这些比我们年龄还要大的古老工具一点也不落后,反而是高效的利器。本次会先从AWK这个相对偏僻的工具说起。

首先花一分钟时间了解AWK是干嘛的:AWK是这个程序3个作者名字首字母的缩写(很帅的命名方法)。它的主要作用是能够方便的对字符分割文件做各种各样的处理,如筛选,重新格式化等(当然,它能做的远不止如此)。如果想迅速了解AWK的使用,强烈建议看左耳朵耗子的这篇文章:http://coolshell.cn/articles/9070.html 这是我看到的写的最清晰的一篇介绍AWK用法的文章。要想深入理解的话,下面这个链接是一篇很不错的教程:http://www.grymoire.com/Unix/Awk.html 如果想真正用好它,肯定要通读用户手册:http://www.gnu.org/software/gawk/manual/gawk.html   其实内容也不多,10个小时以内就能看完,学成后你肯定会对字符处理有新的感受。

由于内建了流程控制,变量支持,正则表达式支持,内建函数支持等一系列特性,我们可以说AWK是一门字符处理的DSL了。它远比你想象的要强大很多很多。举例一种玩法:有同学用它和shell结合写了个测试数据生成器,根据输入模式批量生成SQL,堪比DataFactory,还更加合适自己的项目,更加高效。

最后要说的是:很多Granpa们留下的东西是非常棒的,不要因为他们太古老就扔掉它们。

测试技能积木-AWK的简要用法的更多相关文章

  1. awk 的一些用法

    awk,我觉得是Linux里面处理文本最精妙的命令,它是一个行处理的命令,它最初级的用法是:给定一些简单的pattern,然后按照这个pattern 去搜索匹配的行.它的高级用法是用awk来编程,除了 ...

  2. Shellz中awk的简单用法

    其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...

  3. 移动无线测试技能图谱skill-map

    # 移动无线测试技能图谱 ## 常用IDE- Android * ADT * Android Studio- iOS * Xcode- Common * Atom * Sublime Text * V ...

  4. 测试技能图谱skill-map

    # 测试技能图谱 ## 代码静态分析- Sonar- PMD- Infer- Android * findbugs * AndroidLint * CheckStyle- iOS * scanbuil ...

  5. awk的基本用法

    最近遇到导入的csv文件首行为日期,但需要将日期作为列导入到数据库中,直接使用ctl文件好像无法实现,了解到awk这个强大的命令. 导入的CSV文件除了首行为日期,其他的都是格式相同的.需要将首行单独 ...

  6. Python测试框架pytest命令行参数用法

    在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个 序号 类别 中文名 包含命令行参数数量 1 positional arguments 形参 1 2 gene ...

  7. AWK命令的用法

    1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...

  8. linux 磁盘IO测试工具:FIO (同时简要介绍dd工具测试)

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. 目前主流的第三方IO测试工具有fio.iomete ...

  9. linux学习:sed与awk与tr用法整理

    流编辑器:sed 语法:sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数: -e<script>或--expression ...

随机推荐

  1. 使用hibernate时出现 org.hibernate.HibernateException: Unable to get the default Bean Validation factory

    hibernate 在使用junit测试报错: org.hibernate.HibernateException: Unable to get the default Bean Validation ...

  2. [QualityCenter]设置工作流脚本-新建缺陷时描述字段模板设置

    需求:实现新建缺陷时,描述模板自动生成填写模板. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New    On Error Resume ...

  3. Effective Java 06 Eliminate obsolete object references

    NOTE Nulling out object references should be the exception rather than the norm. Another common sour ...

  4. linux 同步IO: sync msync、fsync、fdatasync与 fflush

    最近阅读leveldb源码,作为一个保证可靠性的kv数据库其数据与磁盘的交互可谓是极其关键,其中涉及到了不少内存和磁盘同步的操作和策略.为了加深理解,从网上整理了linux池畔同步IO相关的函数,这里 ...

  5. Js中获取对象的所有key值

    假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for ...

  6. Java GC 面试问题

    转自:http://icyfenix.iteye.com/blog/715301 这个帖子的背景是今晚看到je上这张贴:http://www.iteye.com/topic/715256,心血来潮写下 ...

  7. 在MFC中添加用户自定义消息

    1.定义一个宏 (用户自定义消息从WM_USER开始) #define WM_XXXXX WM_USER+数值 2.声明一个函数并实现 afx_msg LRESULT OnXXXXX( WPARAM ...

  8. getElementsByName()以及获取checkbox对应文本text,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. windows内核编程之常用数据结构

    1.返回状态 绝大部分的内核api返回值都是一个返回状态,也就是一个错误代码.这个类型为NTSTATUS.我们自己写的函数也大部分这样做. NTSTATUS MyFunction() { NTSTAT ...

  10. uva 297 quadtrees——yhx

    Quadtrees  A quadtree is a representation format used to encode images. The fundamental idea behind ...