7.脚本三剑客之awk
脚本三剑客之awk
目录
awk介绍
- AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
- 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
awk工作原理
- 逐行读取文本,默认以空格或TAB键为分隔符进行分割,将分割所得的各个字段保存到内建变量中,并按照或条件进行编辑命令。
- sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"字段"然后再进行处理。awk信息的读入也是逐行读取的,执行结果通过print的功能将字段数据打印显示。
- 在使用awk命令过程中,可以使用逻辑操作符“&&”表示“与”、“||”示“或”、“!”表示“非”还可以进行简单的数学运算。如+、-、*、/、%、^分别表示加、减、乘、除、取余、和乘方。
awk命令格式
awk 选项 '模式模式条件 {操作}' 文件1 文件2 ...
awk -f 脚本文件 文件1 文件2 ...
awk常见的内建变量(可直接使用)与选项
变量 | 作用 |
---|---|
FS | 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与-F作用一致。 |
NF | 当前处理行的字段个数。 |
NR | 当前处理行的行号。 |
$0 | 当前处理行的整行内容。 |
$n | 当前处理行的第n个字段 |
FILENAME | 被处理的文件名 |
RS | 行分割符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’ |
awk 常用选项:
-F | 指定输入文件折分隔符。 |
---|---|
-v | 赋值一个用户定义变量。 |
-f | 从脚本文件中读取awk命令。 |
awk基础用法
示例:指定文本分隔符区段
示例:打印未知行段数的最后一段内容
示例:通过top命令一次输出,过滤cpu的空闲率
示例:使用awk命令修改输出分隔符
示例:显示行字段数
示例:当前处理行的行号
示例:使用逻辑操作符进行匹配执行文件内容
示例:使用awk命令进行简单的数学运算
示例:计算内存使用率
示例:使用awk命令显示奇数行或偶数行
示例:统计以xxxx结尾的行
注:BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;awk在处理指定的文本,之后在执行END模式中的动作,END{}语句模块中,往往会放入打印结果等语句。
示例:打印/etc/passwd文件内uid大于500的行
示例:使用if语句打印/etc/passwd文件内uid大于500的行
示例:使用c语言条件表达式打印/etc/passwd文件内gid大于uid大于500的行
(条件表达式)?(A表达式或者值):(B表达式或者值)
与三元运算符表达式相同 [ 条件表达式 ] && A || B
条件表达式成立为真时会取 :号 前面的 A的值
条件表达式不成立为假时会取 :号 后面的 B的值
示例:指定行分隔符
示例:awk命令分析 /var/log/secure 查看哪些主机在暴力破解本服务,如果统计出密码验证失败三次及三次以上就把IP加入到黑名单中 /etc/hosts.deny
awk命令高级用法
示例:通过管道符,双引号调用shell命令
示例:使用awk命令修改输出分隔符
OFS:改变输出时分隔符
注:$1=$1为修改分隔符后重新赋值,如果不赋值则$0输出的为修改前的值
示例:awk命令分析 /var/log/secure 查看哪些主机在暴力破解本服务,如果统计出密码验证失败三次及三次以上就把IP加入到黑名单中 /etc/hosts.deny
- AWK 可以使用关联数组这种数据结构,索引可以是数字或字符串
date命令使用
- -d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
- %F 完整日期格式,等价于 %Y-%m-%d
基本显示格式
示例:显示当月的第一天
示例:显示下个月的第一天
示例:显示当月的最后一天
示例:显示上个月的最后一天
示例:使用awk命令显示系统上次开机时间
最新文章
- 【codeforces 442B】 Andrey and Problem
- spring笔记--通过注解(annotation)配置Bean
- [转]解决IIS下UTF-8文件报错乱码的问题
- Java 一维数组 二维数组 三维数组
- SQL中order by;group up;like;关联查询join on的用法
- android 定时器的实现
- OpenGL完全教程 第一章 初始化OpenGL
- 移植linux4.7.2与ubifs到jz2440
- BOM 和 JavaScript 中的 trim
- 性能测试培训:tomcat性能调优方法
- css基础-选择器
- AngularJS进阶(三十二)书海拾贝之特殊的ng-src和ng-href
- win10安装tensorflow-gpu1.13.1+cuda10.0+cudnn7.3.1
- memcached 学习
- Maven pom文件标签解析大全
- Scratch安装使用教程
- JVM学习(一)、垃圾收集器简介
- 给 Advice 传递参数
- 学习笔记之Java
- Java虚拟机(四):JVM类加载机制