一、什么是AWK
AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
简单来说,AWK 是一种处理文本文件的语言,是一个强大的文本分析工具;它可以在无交互的模式下实现复杂的文本操作;通常与sed、grep一起并称处理文本的三剑客。
二、AWK的使用
1.awk的格式
格式一:awk [选项] ‘模式条件{操作}’ 文件名
格式二:cat 文本 | awk [选项] ‘模式条件{操作}’
注:awk支持正则表达式和通配符
2.awk常见的内置变量
内置变量 | 作用 |
---|---|
FS | 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同 |
NF | 当前处理的行的字段个数 |
NR | 当前处理的行的行号 |
$0 | 当前处理的行的整行内容 |
$n | 当前处理行的第n个字段 |
RS | 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’ |
3.实践(基础)
多说无益,直接上实验
awk支持提取关键字所在行,效果等同于grep
4.常用的值的提取
-
本机IP地址:
ifconfig ens33 | awk ‘/inet / {print $2}’
-
本机MAC地址
ifconfig ens33 | awk ‘/ether/ {print $2}’
-
磁盘已用大小(包含%):
df | awk ‘//$/ {print $5}’
-
磁盘已用大小(不包含%):
df | awk -F “( |%)*” ‘//$/ {print $5}’
-
本机型号
lscpu | awk -F: ‘/型号名称/ {print $2}’ | tr -s " "
-
已用内存
free -h | awk ‘/Mem/ {print $3}’