Shell 编程-Shell 流编辑器 AWK (上)看了就会

今天给伙伴们分享一下Shell 流编辑器 AWK,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

一、AWK 简介

  • AWK 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。

  • AWK 的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。

二、AWK 语法格式

1、AWK 命令行方式

awk [-F  field-separator]  'commands'  input-file(s)
awk [选项参数] 'commands' var=value file(s)
  • commands 是真正 AWK 命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件

  • AWK 中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

2、AWK 命令插入一个单独文件调用

awk -f awk-script-file input-file(s)
awk [选项参数] -f scriptfile var=value file(s)
  • -f 选项加载 awk-script-file 中的 awk 脚本,input-file(s) 是待处理的文件。

3、shell 脚本方式

  • 将所有的awk命令插入一个文件,并使 awk 程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。相当于shell脚本首行的:#!/bin/sh 可以换成:#!/bin/awk

三、AWK 工作原理

AWK 工作流程可分为三个部分:

  • 读输入文件之前执行的代码段(由BEGIN关键字标识)。
  • 主循环执行输入文件的代码段。
  • 读输入文件之后的代码段(由END关键字标识)。

1、AWK 命令结构

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

下图是 AWK 的工作流程

img

  • 通过关键字 BEGIN 执行 BEGIN 块的内容,即 BEGIN 后花括号 {} 的内容。
  • 完成 BEGIN 块的执行,开始执行body块。
  • 读入有 \n 换行符分割的记录。
  • 将记录按指定的域分隔符划分域,填充域,$0 则表示所有域(即一行内容), 1 ∗ ∗ 表示第一个域, ∗ ∗ 1** 表示第一个域,** 1表示第一个域,n 表示第 n 个域。 nihao $1 nihuai $2 $0
  • 依次执行各 BODY 块,pattern 部分匹配该行内容成功后,才会执行 awk-commands 的内容。
  • 循环读取并执行各行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘嫣慕曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值