`
肖福燕
  • 浏览: 12164 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

awk使用说明

阅读更多
一、简介
    AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。
    awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。


二、语法格式
      awk '{pattern + action}' {filename}
    其中pattern表示AWK在数据中查找的内容,可以是正则表达式,用斜杠括起来,action是在找到匹配内容时所执行的一系列命令。通常AWK以文件的一行为处理单位,然后执行相关的命令来处理文件。


三、三种调用方式
1、awk命令行
    可以像使用普通UNIX命令一样使用awk,在命令行中也可以使用awk程序设计语言,虽然awk支持多行的录入,但是录入长长的命令行并保证其正确无误却是一件令人头疼的事,因此,这种方法一般只用于解决简单的问题。
    awk [-F  field-separator]  'commands'  input-file(s)
    其中-F(分隔符)是可选的,commands是真正的awk命令,input-file(s)是待处理的文件

2、使用-f选项调用awk程序
    awk允许将一段awk程序写入一个文本文件,然后在awk命令行中用-f选项调用并执行这段程序。
    awk -f awk-file input-file(s)
    其中,-f选项加载awk-file中的awk脚本

3、利用命令解释器(shell脚本)调用awk程序
    利用UNIX支持的命令解释器功能,我们可以将一段awk程序写入文本文件,然后在它的第一行加上:
    #!/bin/awk -f
    并赋予这个文本文件以执行的权限。这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了。
    awk 脚本文本名 待处理文件


四、数据类型
    awk仅有两个主要的数据类型:字符串和数字。同时awk的字符串和数字可以相互转换,字符串能够被解释为数字并把它的值转换为数字,如果不包含数字将转化为0。
    它们都可以在代码里的action部分使用 = 操作符给变量赋值,我们可以在任意时刻、任意地方声明和使用变量,也可以使用未初始化的变量,此时它们默认的值是空字符串""。
最后awk有数组类型,并且它们是动态的一维关联数组。它们的语法是这样的:
    var[key] = value
    awk可以模拟多维数组,但无论如何这是一个大的技巧。


五、内置变量
    awk提供了很多内置变量,了解这些内置变量的使用很有必要,下面给出一些常用的变量:
    ARGC 命令行参数个数(不包括awk的选项和程序内容)
    ARGIND 当前正在处理的ARGV中的文件的索引值(同时处理多个文件时会用到)
    ARGV 命令行参数序列数组,下标从0开始
    ENVIRON 当前系统的环境变量
    ERRNO 出错时的错误信息
    FILENAME 当前正在处理的文件名,该变量不能在BEGIN块中使用
    FNR 浏览文件的记录数
    FS 字段的分隔符,默认为空格,等价于命令行-F 选项
    NF 当前记录中的域的个数
    NR 已经读出的记录数
    OFS 输出的字段分隔符,默认为空格
    ORS 输出的记录分隔符,默认为新行
    RS 输入记录的分隔符,默认为新行


六、模式
    可以使用的模式分为三大类:正则表达式、布尔表达式和特殊模式。
    1、正则表达式比较轻量。它们不是Awk下的PCRE(但是gawk可以支持该库——这依赖于具体的实现!请使用 awk –version查看),然而,对于大部分的使用需求已经足够了。注意,模式不能捕获特定的组(groups)使它们在代码的ACTION部分执行。模式是专门匹配内容的。
    2、布尔表达式与PHP或者Javascript中的布尔表达式类似。特别的是,在awk中可以使用&&(“与”)、||(“或”)、!(“非”)操作符。你几乎可以在所有类C语言中找到它们的踪迹。它们可以对常规数据进行操作。
    与PHP和Javascript更相似的特性是比较操作符,==,它会进行模糊匹配(fuzzy matching)。因此“23”字符串等于23,”23″ == 23 表达式返回true。!= 操作符同样在awk里使用,并且别忘了其他常见的操作符:>,<,>=,和<=。你同样可以混合使用它们:布尔表达式可以和常规表达式一起使用。 /admin/ || debug == true 这种用法是合法的,并且在遇到包含“admin”单词的行或者debug变量等于true时该表达式就会匹配成功。
    3、在Awk里有一些特殊的模式,但不是很多。
第一个是BEGIN,它仅在所有的行都输入到文件之前进行匹配。这是你可以初始化你的脚本变量和所有种类的状态的主要地方。
    另外一个就是END。就像你可能已经猜到的,它会在所有的输入都被处理完后进行匹配。这使你可以在退出前进行清除工作和一些最后的输出。


七、实例
分享到:
评论

相关推荐

    awk使用手册

    ### awk使用手册详解 #### 一、awk简介 在UNIX世界里,存在许多强大的文本处理工具,其中awk作为一款出色的模式扫描与处理语言,却往往被人们所忽视。它的名字来源于三位创造者的名字首字母——Aho、Weinberg以及...

    GAWK: Effective AWK Programming;AWK说明书

    标签包含了“GNU AWK 编程 说明书 教程”,这表明这本书是关于GNU AWK编程的详细说明和教程。GNU AWK(GAWK)是一个功能强大的工具,它支持复杂的数据处理和报告任务,是系统管理员和程序员不可或缺的工具之一。 在...

    MOXA_AWK-3121配置方法及要点说明

    MOXA AWK-3121 配置方法及要点说明 MOXA AWK-3121 是一种工业级无线设备,具有 web 功能配置、IP 网络参数设置、工作模式选择、功率增强等特点。本文将详细介绍 MOXA AWK-3121 的配置方法及要点说明。 一、Web ...

    awk 工具用法说明

    - `awk -f awkfile file`: 使用`awkfile`文件中的脚本控制对`file`的处理。 7. **条件匹配** - `awk '$1~/101/ {print $1}' file`: 显示文件中第一列匹配正则表达式`101`的所有行。 8. **输出格式调整** - `awk...

    MOXA_AWK3121配置方法

    软件登录后,可根据需要选择仅搜索AWK的IP参数或进行AWK管理,其中管理功能需要使用默认的admin密码进行身份验证。 综上所述,MOXA_AWK3121设备的配置方法涉及到多个方面,每一步都可能直接影响到无线网络的性能和...

    AWK使用手册.pdf

    《AWK使用手册》是专为帮助读者快速掌握AWK编程语言而编写的,通过一系列具有代表性的实例和解析,让读者逐步理解并熟练运用AWK处理数据和生成报表。AWK是一种强大的文本分析工具,它能对输入数据(如文件、标准输入...

    awk+手册中文版.pdf

    前言简介了 awk 手册的目的和内容,说明了 awk 手册的结构和特点。awk 概述则介绍了 awk 的定义、特点、优点和应用场景,并解释了 awk 的工作原理和架构。 awk 的优点包括: * 使用直译器(Interpreter),不需...

    awk入门到精通.pdf

    本书的编排顺序从基础到进阶,包含了从简单到复杂的多个实例,每个实例都旨在说明awk如何解决特定的问题。作者精心挑选了一系列范例,并在每个范例中详细解释了所使用的awk语法和指令。此外,为了方便读者学习和未来...

    GNU AWK 英文版使用手册

    最后的附录部分,提供了AWK语言的演进历史、gawk的安装说明、实现笔记、基本编程概念和术语表。附录旨在为读者提供更多参考资料,帮助他们更全面地了解AWK及其历史背景,也有助于对AWK的内部实现有更深层次的理解。 ...

    AWK使用手册.doc

    各范例由浅入深, 彼此间相互连贯,范例中并对所使用的awk语法及指令辅以必要的说明. 有关awk的指令, 函数,...等条列式的说明则收录于附录中, 以利读者往后撰写程序时查阅. 如此编排, 可让读者在短时间内顺畅地学会...

    awk源码及windows下64位和32位编译说明

    5. 验证安装:在命令行输入`awk -v version`,如果显示awk的版本信息,说明安装成功。 需要注意的是,在Windows环境下,awk的某些功能可能与Unix/Linux系统有所不同,例如文件路径的处理和一些系统调用的实现。此外...

    AWK学习说明书.mobi

    官方的开源文档

    awk知识文档学习

    - **字段分隔符**: Awk使用内置变量FS(Field Separator)来确定字段的分隔符,默认为空格和制表符。 - **记录分隔符**: RS(Record Separator)用来指定记录的分隔符,默认为换行符。 ### 5. 格式化输出 Awk提供...

    AWK-4121介绍

    它适用于不易布线、布线成本较高或者需要在移动TCP/IP网络环境中使用的场景。 #### 二、技术特性 - **兼容性**:符合IEEE802.11a/b/g标准,确保了设备在网络中的互操作性和兼容性。 - **电源选项**:支持冗余电源...

Global site tag (gtag.js) - Google Analytics