shell 正则表达式之awk

概述:

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作数据可以来自标准输入也可以是管道或文件
20世纪70年代诞生于贝尔实验室,现在centos7用的是gawk
之所以叫 Awk是因为其取了三位创始人Alfred Aho,Peter Meinberger,和 Brian Kernighan 的 Family Name的首字符。

工作原理:

当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次

Awk基本语法

awk  [选项]  '模式或条件{编辑指令}' 文件
或
awk -f 脚本文件 文件

常见内置变量

在这里插入图片描述
案例:
awk ‘{print $1}’ pass.txt:打印第一列,以空格隔开为一列。
在这里插入图片描述
awk -F: ‘{print $1}’ pass.txt:以: 为分隔符。显示第一列
在这里插入图片描述

awk -F: ‘{print $1" "$2}’ pass.txt:显示第一和第二列,并添加空格。" "中可以添加其他常量
在这里插入图片描述
在这里插入图片描述

先执行$0显示整行,再打印第一列和第二列。
在这里插入图片描述
NF:显示每一行有多少列
在这里插入图片描述
NR:显示行号
在这里插入图片描述
“\t”:制表符。相当于一个TAP键
在这里插入图片描述
-F[/:] :定义:和/为分隔符
在这里插入图片描述
/^bin/ :找出第一列以bin开头的
在这里插入图片描述
/sbin/ :打印有sbin的所有行
在这里插入图片描述

匹配第一列有daemon的行,并把最后一列输出。
~:表示模糊匹配,$NF:最后一列
在这里插入图片描述
输出第5列不包含dae的所有行的第一列和最后一列。
在这里插入图片描述
打印行号第1, 3 的行 ==精准匹配。
在这里插入图片描述
打印行号含有1 3 的行
在这里插入图片描述
精确匹配第一列有sssd的行
在这里插入图片描述
保留原来的格式,输出以冒号为分割
在这里插入图片描述

BEGIN

当读取第一条数据之前所要做的事情,可进行运算

在这里插入图片描述
在引用变量时需要加单引号’ ’
在这里插入图片描述

END

在所有数据处理完后执行
先打印以冒号分割的第一列的第一行。在打印加法运算的结果。
在这里插入图片描述

FS =“:“

指定分隔符
在这里插入图片描述

OFS

输出时以什么作为分隔符, ,映射为空格
在这里插入图片描述
没有定义分隔符时,以最后的空格为分隔符
在这里插入图片描述

在这里插入图片描述

使用管到符 | 处理命令输出结果

在这里插入图片描述

Awk应用案例

监控磁盘空间,当磁盘的使用空间超过90%时发邮箱报警。


#!/bin/bash
space=`df | sed -ne '/\/$/p' | awk '{print $5}' | sed 's/%//'`
<<abc
df:查看磁盘
sed -ne '/\/$/p':截取以“/”为结尾的行
awk '{print $5}':打印第5个字段
sed 's/%//':去掉%。
abc
if [[ $space -ge 90 ]];then
  echo "磁盘空间不足" | mail -s "Disk Alarm"admin@example.com
fi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值