当前位置: 首页 > 操作系统 > Linux > 正文

用awk编写Shell脚本

时间:2013-04-22

一、概述

1. 产品概述:

awk是一种编程语言,用于在linux/unix下对文本和数据进行扫描与处理。数据可以来自标准输入、文件、管道。

awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Peter Weinberger、Brian Kernighan。

实际上awk有很多种版本,如:awk、nawk、mawk、gawk、MKS awk、tawk...  这其中有开源产品也有商业产品。

目前在Linux中常用的awk编译器版本有mawk,gawk,其中以RedHat为代表使用的是gawk,以Ubuntu为代表使用的是mawk。

gawk是GNU Project 的awk解释器的开源代码实现。

本文将以gawk作为讲解工具。

2. 原理:

1). awk逐行扫描文件,从第一行到最后一行,寻找匹配特定模式的行,并在这些行上进行你想要的操作。

2). awk基本结构包括模式匹配(用于找到要处理的行)和处理过程(即处理动作)。

  pattern  {action}

# 提示:awk读取文件内容的每一行时,将对比改行是否与给定的模式相匹配,如果匹配则执行处理过程,否则对该行不做任何处理。

如果没有指定处理脚本,则把匹配的行显示到标准输出,即默认处理动作是print打印行;

如果没有指定模式匹配,则默认匹配所有数据。

3). awk有两个特殊的模式:BEGIN和END,他们被放置在没有读取任何数据之前以及在所有数据读取完成以后执行。

3. awk流程图:

提示:awk将文件中的每一行当作一条记录,并将记录分割为若干字段,默认以空格或制表符为分隔符。

如This   is   a    test    file.    将分割为5个字段,awk可以对这5个字段进行分别处理。