目录
一.awk详解
1.1 awk的概述
- awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。
- 数据可以来自标准输入、一个或多个文件,或其他命令的输出。
- 它支持用户自定义函数和动态正则表达式等先进功能。
1.2 awk处理文本方式
1. awk的处理文本和数据的方式是这样的,
2. 它逐行扫描文件,从第一行到最后一行,
3. 寻找匹配的特定模式的行,并在这些行上进行你想要的操作。
4. 如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕)。
5. awk分别代表其作者姓氏的第一个字母,因为他的作者是三个人,分别是Alfred Aho、Peter Weinberger、Kernighan
1.3 awk的工作原理
1. awk使用一行作为输入,并在这一行赋给内部变量$0,每一行也可称为一个记录,以换行符结束
2. 然后,行被:(默认为空格或制表符)分解成字段(或域),每个字段存储在已编号的变量 中,从$1开始 最多达100个字段
3. awk输出之后,将从文件中获取另一行,并将其存储在$0中,覆盖原来的内容,然后将新的字 符串分隔成字段并进行处理,该过程将持续到所有行处理完毕
4. 一行被称为记录,一个词称为字段
1.4 awk语法
- 选项:例如 -F 定义输入字段分隔符,默认的分隔符是空格或制表符(tab)
- 命令(时空):过去 现在 将来
- BEGIN{}:begin发生在行处理前(注意大写)
- { } :行处理时,读一次执行一次
- END{}:=行处理之后
二.awk常见的内建变量(可以直接使用)
2.1 $0当前处理的行的整行内容
2.2 NR处理指定行的内容
2.2.1 使用数字处理内容
![](https://i-blog.csdnimg.cn/blog_migrate/8b7b258431f185a11a8225df6ff8945c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0a564bfca0549e53ebdd171054d60770.png)
2.2.2 使用字符串处理行的内容
2.2.3 打印行号
使用BEGIN输出包含指定字符的行并统计有多少行
BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;
awk再处理指定的文本,之后再执行END模式中指定的动作;
END{ } 语句块中,往往会放入打印结果等语句。
2.3 $n当前处理行的第n个字段
示例:
2.4 FS(-F)列分隔符,指定每行文本的字段分隔符
与! 一起使用
与if语句或者while或三目运算符等一起使用时需要在嵌套一个大括号{ }
三元运算符
2.5 OFS输出内容的列分隔符
将空格换为“|”
2.6 NF当前处理的行的字段个数
打印第一个字段与最后一个字段
2.7 RS行分隔符
三.awk实例:
查看内存使用
查看cpu空闲率
top -b -n 1 只会输出一次top的结果不会进行刷新
通过脚本分析/var/log/secure查看哪些主机在暴力破解本服务,如果统计出密码验证失败超过三次就把IP加入到黑名单中/etc/hosts deny
四.date命令
以数字形式输出
以年月日的形式输出
输出当月的第一天
输出下一个月的第一天
输出本月的最后一天
输出上个月的倒数第3天
输出服务器重启时间