首页 » 运维 » 正文

awk 教程简介

awk 是什么? awk 是linux 最常用的处理文本文件的工具之一, 与另外两个 grep,sed 并称linux 文本处理三大利器

awk 之所以会叫awk是因为取自他们的发明者名字  Alfred Aho,Peter Weinberger, 和 Brian Kernighan

awk 最核心的处理模式是逐行处理文本,然后对此行文件进行一些处理,awk单独拿出来可以写一本书,我还真见过那本书,本文只介绍最基本常用的用法

awk 的逻辑:按照输入的文件一行一行的处理,并将处理结果打印出来,也就是说,输出的结果是多行的,对每行进行处理的结果

1: 输出指定的列

很多时候,对与文本中的一行来说,我们可以选择打印指定的列,以/etc/passwd为例子:

如果我们只是想看看用户名和home目录,我们可以使用如下的命令

awk 的命令格式为: awk  操作 文件名

上边的命令特殊的地方在于-F : 这个参数指定的是分隔符,awk默认的分隔符是空格“ ”,也就是说,如果我们有一行:

awk会帮我们把这行按照空格进行分组, 第一组就是 第一列,第二组就是第二列….,并把这个组按照顺序分配给$1 $2 ….意思就是说,$2 === “第二列”,我们继续说/etc/passwd的例子,因为文件并不是使用空格分割的,所以我们必须使用自定义的分隔符“:” ,然后我们的操作是打印$1 和$6,就是打印以冒号“:”分割成的组后的第1个组和第6个组



按照红圈展示的话,打印结果正好是用户名和家目录

 

2: 条件判断

很多时候,我们希望做一些简单的判断,例如,如果第一列的值是apache的用户的话,我们才会打印第1列和第6列

如上名的命令展示的,因为我们加入了判断第一列是否为apache,输出的内容仅剩一行,因为其他的行并不符合判断条件,另外awk额外还提供了更加完整的if判断模式,大家需要的话可以自行搜索

3:内置函数

awk内置了一些函数让我们使用,例如大写函数toupper,作用是将所有字符转换为大写,我们对比一下使用和不使用的情况

第二次的时候我们就发现$1已经自动转换为大写了

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)