AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作数据可以来自标准输入也可以是管道或文件
20世纪70年代诞生于贝尔实验室,现在centos7用的是gawk
之所以叫 Awk是因为其取了三位创始人Alfred Aho,Peter Meinberger,和 Brian Kernighan 的 Family Name的首字符。
当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
如果没有定义匹配条件默认是匹配所有数据行,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的行
保留原来的格式,输出以冒号为分割
当读取第一条数据之前所要做的事情,可进行运算
在引用变量时需要加单引号’ ’
在所有数据处理完后执行
先打印以冒号分割的第一列的第一行。在打印加法运算的结果。
指定分隔符
输出时以什么作为分隔符, ,映射为空格
没有定义分隔符时,以最后的空格为分隔符
监控磁盘空间,当磁盘的使用空间超过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