shell 正则表达式之awk
作者:互联网
正则表达式之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
标签:shell,匹配,正则表达式,打印,awk,分隔符,第一列,Awk 来源: https://blog.csdn.net/weixin_55905026/article/details/117914337