shell 正则表达式之awk
2021/6/15 7:21:06
本文主要是介绍shell 正则表达式之awk,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式之awk
- 概述:
- 工作原理:
- Awk基本语法
- 常见内置变量
- BEGIN
- END
- FS =“:“
- OFS
- 使用管到符 | 处理命令输出结果
- 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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?