10.4 文本处理工具awk

上一节中介绍的sed其实是以行为单位的文本处理工具,而awk则是基于列的文本处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。事实上,awk是一种编程语言,其语法异常复杂,所以awk也是一种较难掌握的文本处理工具。本节将使用大量的例子来直接演示awk的常见用法,让读者能迅速学会使用。

awk认为文件都是结构化的,也就是说都是由单词和各种空白字符组成的,这里的“空白字符”包括空格、Tab,以及连续的空格和Tab等。每个非空白的部分叫做“域”,从左到右依次是第一个域、第二个域,等等。$1、$2分别用于表示域,$0则表示全部域。

为了演示awk的用法,首先创建文件Awk.txt,文件内容如下所示:


  1. [root@localhost ~]# cat Awd.txt
  2. john.wang Male 30 021-11111111
  3. lucy.yang Female 25 021-22222222
  4. jack.chen Male 35 021-33333333
  5. lily.gong Female 20 021-44444444 ShangHai