`
wode66
  • 浏览: 738266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

awk实例一:简单入门

阅读更多

Awk是一种处理结构数据并输出格式化结果的编程语言, Awk 是其作者 "Aho,Weinberger,Kernighan" 的简称。

Awk通常被用来进行格式扫描和处理。通过扫描一个或多个文件中的行,查看是否匹配指定的正则表达式,并执行相关的操作。

Awk的主要特性包含:

1. Awk以记录和字段的方式来查看文本文件

2. 和其他编程语言一样,Awk 包含变量、条件和循环

3. Awk能够进行运算和字符串操作

4. Awk能够生成格式化的报表数据

Awk从一个文件或者标准输入中读取数据,并输出结果到标准输出中。

1.  Awk的语法

  1. Syntax:    
  2.     
  3. awk '/search pattern1/ {Actions}    
  4.      /search pattern2/ {Actions}' file    
 

在上诉语法中:

1. search pattern是正则表达式

2. Actions 输出的语法

3. 在Awk 中可以存在多个正则表达式和多个输出定义

4. file 输入文件名

5. 单引号的作用是包裹起来防止shell 截断

 

2.  Awk的工作方式:

1) Awk 一次读取文件中的一行

2)对于一行,按照给定的正则表达式的顺序进行匹配,如果匹配则执行对应的 Action

3)如果没有匹配上则不执行任何动作

4)在上诉的语法中, Search Pattern 和 Action 是可选的,但是必须提供其中一个

5)如果 Search Pattern 未提供,则对所有的输入行执行 Action 操作

6)如果 Action 未提供,则默认打印出该行的数据

7) {} 这种 Action 不做任何事情,和未提供的 Action 的工作方式不一样

8) Action 中的语句应该使用分号分隔

创建一个包含下面内容的文本文件employee.txt 。后续的例子中将会用到该文件

 

 

  1. $cat employee.txt    
  2. 100  Thomas  Manager    Sales       $5,000    
  3. 200  Jason   Developer  Technology  $5,500    
  4. 300  Sanjay  Sysadmin   Technology  $7,000    
  5. 400  Nisha   Manager    Marketing   $9,500    
  6. 500  Randy   DBA        Technology  $6,000    
 

 

 

3.  Awk 的默认行为

默认的时候awk 打印文件中的每一行

 

  1. $ awk '{print;}' employee.txt    
  2. 100  Thomas  Manager    Sales       $5,000    
  3. 200  Jason   Developer  Technology  $5,500    
  4. 300  Sanjay  Sysadmin   Technology  $7,000    
  5. 400  Nisha   Manager    Marketing   $9,500    
  6. 500  Randy   DBA      Technology  $6,000    

 

 

在上面的例子中,匹配的正则表达式未给出,因此后续的Action 适用所有的行, Action 中的 print 没有任何参数的情况下将打印整行,注意其中的 Action 必须使用 {} 括起来。

4.  Awk打印匹配的行

 

 

  1. $ awk '/Thomas/    
  2. > /Nisha/' employee.txt    
  3. 100  Thomas  Manager    Sales       $5,000    
  4. 400  Nisha   Manager    Marketing   $9,500    
 

 

 

在上面的例子中,将打印包含Thomas 和 Nisha 的行,上面的列子包含两个正则表达式。 Awk 可以接受任意数量的正则表达式,但是每个组合 ( 正则表达式和对应的 Action) 必须用新行来分隔。

5.  Awk仅打印指定的域

Awk包含许多内建的变量,对于每行的记录, Awk 默认按照空格进行分割,并将分隔后的值存入对应的 $n 变量中。如果一行还有 4 个单词,将被分别存储进 $1 $2 $3 $4 中,其中 $0 代表整行。 NF 也是一个内建的变量,代表该行中分割后的变量数。

  1. $ awk '{print $2,$5;}' employee.txt    
  2. Thomas $5,000    
  3. Jason $5,500    
  4. Sanjay $7,000    
  5. Nisha $9,500    
  6. Randy $6,000    
  7. $ awk '{print $2,$NF;}' employee.txt    
  8. Thomas $5,000    
  9. Jason $5,500    
  10. Sanjay $7,000    
  11. Nisha $9,500    
  12. Randy $6,000   
 
 

在上诉例子中$2 和 $5 分别代表名字和薪水,也可以使用 $NF 获得薪水,其中 $NF 代表最后一个字段,在打印语句中逗号是一个连接符号。

6.  Awk开始和最后的动作

Awk包含两个重要的关键字 BEGIN 和 END

 

 

  1. Syntax:     
  2.     
  3. BEGIN { Actions}    
  4. {ACTION} # Action for everyline in a file    
  5. END { Actions }    
  6. # Awk中的注释    
 

 

 

在BEGIN 节中的 Actions 会在读取文件中的行之前被执行。

而END 节中的 Actions 会在读取并处理文件中的所有行后被执行。

 

 

  1. $ awk 'BEGIN {print "Name/tDesignation/tDepartment/tSalary";}    
  2. > {print $2,"/t",$3,"/t",$4,"/t",$NF;}    
  3. > END{print "Report Generated/n--------------";    
  4. > }' employee.txt    
  5. Name Designation Department Salary    
  6. Thomas   Manager   Sales           $5,000    
  7. Jason   Developer   Technology   $5,500    
  8. Sanjay   Sysadmin   Technology   $7,000    
  9. Nisha   Manager   Marketing   $9,500    
  10. Randy   DBA     Technology   $6,000    
  11. Report Generated    
  12. --------------    
 

 

 

上述的例子为输出结果增加头和尾描述

7.  Awk找出员工 ID 大于 200 的员工

 

 

  1. $ awk '$1 >200' employee.txt    
  2. 300  Sanjay  Sysadmin   Technology  $7,000    
  3. 400  Nisha   Manager    Marketing   $9,500    
  4. 500  Randy   DBA        Technology  $6,000    
 

 

 

在上述例子中,$1 代表员工 ID ,如果员工 ID 大于 200 则执行默认的打印整行的 Action 。

8.  Awk打印技术部员工

$4代表员工所在的部门,如果等于 Technology 则打印出整行

 

 

  1. $ awk '$4 ~/Technology/' employee.txt    
  2. 200  Jason   Developer  Technology  $5,500    
  3. 300  Sanjay  Sysadmin   Technology  $7,000    
  4. 500  Randy   DBA      Technology  $6,000    
 

 

 

~操作符是和正则表达式中的值进行比较,如果匹配则打印整行

9.  Awk打印技术部门的员工数

在下面的例子中,检查员工的部门是否是Technology ,如果是则递增 count 变量的值。 Count 变量的值在BEGIN 的 Actions 中被初始化为 0 。

 

 

  1. $ awk 'BEGIN { count=0;}    
  2. $4 ~ /Technology/ { count++; }    
  3. END { print "Number of employees in Technology Dept =",count;}' employee.txt    
  4. Number of employees in Tehcnology Dept = 3    
 

 

 

在处理的最后(END 的 Actions) ,仅仅打印出 Technology 部门的人数

 

转自:http://blog.csdn.net/andyxm/article/details/5964071

分享到:
评论

相关推荐

    awk实例入门教程.pdf

    awk 实例入门 教程 AWK_样式扫描和处理语言

    awk入门级教材awk入门awk入门

    awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达

    awk入门到精通.pdf

    1. 前言 这是一本awk学习指引, 其重点着重于 :  awk 适于解决哪些问题 ?...本手册为awk入门的学习指引, 其内容将先强调如何撰写awk程序,未列入进一步解题方式的应 用实例, 这部分将留待UNIX进阶手册中再行讨论.

    awk简明语法一本入门的好书

    awk 脚本 shell编程 实例教程 简单易懂

    AWK 应用程序入门与实例

    Awk 是一种名称奇怪但功能强大的语言。本文是一个包含三部分的系列的第一篇。在本文中, DanielRobbins 将使您迅速掌握 awk 编程技巧。随着本系列的进展,将讨论更高级的主题,最后将演示一 个真实的高级 awk 应用...

    shell最全基础2020年入门—从熟悉grep、sed、awk开始

    文章目录前言一、什么是shellshell脚本大白话二、shell常用操作三、文本处理三剑客 — 搜索工具grep1.什么是grep2.格式3.主要参数4.pattern正则表达式主要参数:5. grep使用实例四、文本处理三剑客 — 流编辑器sed1....

    awk入门教程

    awk常用命令内容简介 内容简介 概述 变量 模式 动作 I/O 语句 函数 其他 限制 实例

    Linux下BASH、AWK编程视频教程.zip

    目录网盘文件永久链接 01.BASH编写入门与实例 02.编写对话框的界面程序 03.与服务器交互的脚本 expect 04.BASH内置变量的使用 05.awk编程与应用

    shell 编程指南pdf

    18.3.16 另一个拷贝实例 169 18.3.17 多个if语句 169 18.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 170 18.3.20 增加和检测整数值 171 18.3.21 简单的安全登录脚本 172 18.3.22 elif用法 173 18.3.23 ...

    Linux C 一站式学习

    C语言入门 C语言本质 Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ...

    linux下shell编程由入门到精通

    1、对操作系统中经常使用的一些命令sed、awk、find、grep、|等做了详细讲解 2、由浅到深的对shell编程进行讲解 3、书中有很多实例,可以加深我们对shell的理解

    Shell脚本专家指南

    不是为了创作出一本shelI脚本编程的入门书。而是希望能够提供一些更具深度的内容。它的作用不仅仅是解释sheIl代码的内容,更在于讲述在大多数情况下如何以及为何使用某种特定的编程逻辑。这些脚本将帮助你大大提高...

    宋劲彬的嵌入式C语言一站式编程

    4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支...

    C程序设计语言(第2版·新版中文)

    人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。 内容提要 -------------------------------------------------------------------------------- 《C...

    UNIX操作系统教程 张红光

    Window及其他实用程序292 14.1X-Window292 14.1.1X-Window的特征292 14.1.2X-Window的工作方式293 14.1.3X-Window的组成部件294 14.1.4X-Window编程环境介绍295 14.2数据检索加工工具awk296 14.2.1awk基本描述296 ...

Global site tag (gtag.js) - Google Analytics