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命令显示系统上次开机时间


7.脚本三剑客之awk的更多相关文章
- shell脚本三剑客之awk
shell脚本之awk命令 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具 适合小型文本数据 1.工作原理 2.AWK格式 3.按行输入文本 4.按字段输入文本 5.通过管道符号,双引号调 ...
- shell脚本三剑客:grep、sed、awk
shell脚本三剑客:grep sed awk grep语法: grep [OPTIONS] PATTERN [FILE] 常用选项 -c 统计匹配到的 ...
- 文本三剑客之awk
awk和流编辑器sed在工作原理和用法上有很多类似之处,它们都是检查输入数据中的行是否匹配指定的模式,如果匹配成功就对匹配的行执行相应的操作,重复这个过程直到所有的输入数据都被处理完,因此awk和se ...
- shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计
shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...
- shell编程系列20--文本处理三剑客之awk常用选项
shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...
- Linux 三剑客之 awk 实战详解教程
我们知道 Linux 三剑客,它们分别是:grep.sed.awk.在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 awk. sed 可以实现非交互式的字 ...
- day16 Linux三剑客之awk
day16 Linux三剑客之awk 1.什么是awk,主要作用是什么? 什么是awk,主要作用是什么? awk 主要用来处理文件,将文本按照指定的格式输出.其中包含变量,循环以及数组. 2.awk的 ...
- Linux实战教学笔记18:linux三剑客之awk精讲
Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...
- (转)不看绝对后悔的Linux三剑客之awk实战精讲
原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...
随机推荐
- Installing github.com/mdempsky/gocode FAILED ----vscode安装go插件中的一些坑
问题前景: 最近在使用vscode,编写一些go的代码,但发现调试的时候,会需要安装很多插件,但通过vscode之间安装的话,会出现如下的错误: Installing github.com/mdemp ...
- 序列化和反序列化为什么要实现Serializable接口?(史上最全、简单易懂)
目录结 前言 1.什么是序列化和反序列化 2.什么时候需要进行序列化和反序列化 2.1.服务器和浏览器交互时用到了Serializable接口吗? 2.2.Mybatis将数据持久化到数据库中用到了S ...
- MPU9250/MPU6050与运动数据处理与卡尔曼滤波(1)
第一篇--概述和MPU6050及其自带的DMP输出四元数 概述 InvenSense(国内一般译为应美盛)公司产的数字运动传感器在国内非常流行,我用过它的两款,9250和6050.出于被国产芯片惯坏的 ...
- Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习
Problem - C - Codeforces 看清题目要求, 最重要部分在第二段. 大佬最后给出的代码果然简单, 思路简单化, 未必非要把答案在一个大括号里全部完成, 两个指针同时跑,中间加了一堆 ...
- 08. 树莓派安装MySQL
1. 配置国内源(如果之前设置过可跳过步骤1~步骤2) vim /etc/apt/sources.list.d/raspi.list 2. 添加源 ,文档内原先的内容在开头加#号注释掉,加上下面这个 ...
- 攻防世界-MISC:János-the-Ripper
这是攻防世界MISC高手进阶区的题目: 点击下载附件一,解压后得到一个没有后缀的文件,老规矩用010editor打开,发现存在一个flag.txt文件 用foremost分离一下: flag.txt被 ...
- Django学习——路由层之路由匹配、无名分组、有名分组、反向解析
路由层之路由匹配 """路由你可以看成就是出去ip和port之后的地址""" url()方法 1.第一个参数其实是一个正则表达式 2.一旦第 ...
- 基于.Net C# 通信开发-串口调试助手
基于.Net C# 通信开发-串口调试助手 1.概述 串口调试助手,广泛应用于工控领域的数据监控.数据采集.数据分析等工作,可以帮助串口应用设计.开发.测试人员检查所开发的串口应用软硬件的数据收发状况 ...
- Linux网络重点知识总结性梳理
一个执着于技术的公众号 1 OSI七层模型 层次 说明 功能/协议 应用层 应用程序及接口 提供应用程序的接口:FTP telnet http pop3等 表示层 对数据进行转换.加密和压缩 将上层的 ...
- 安卓导航抽屉 Navigation Drawer 实现沉浸通知栏
在使用 Navigation Drawer Activity 模版的时候,遇到了通知栏无法完全沉浸的问题,尝试搜索一些现有的解决方法,但是或多或少都会存在一些问题,通过反复尝试找到找到了一种比较靠谱的 ...