文本三剑客-awk

一、awk的介绍

1.1awk的简介

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具

可以在无交互的模式下实现复杂的文本操作

相较于sed常作用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理,因为awk相当适合小型的文本数据。

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符

1.2基本格式

awk -f | -v 脚本文件 文件1 文件.....

1.3awk常见的内置变量

FS∶ 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF∶ 当前处理的行的字段个数。
NR∶ 当前处理的行的行号(序数)。
$0∶当前处理的行的整行内容。
$n∶ 当前处理行的第n个字段(第n列)。
FILENAME∶ 被处理的文件名。
RS∶ 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
$NF:最后一段
$(NF-1):倒数第二段

二、打印方法

awk可以将自动将多个空格压缩成一个空格

打印字符串需要加双引号

2.1基础打印

打印其中一列

打印字符串

2.2打印全部

注意:

0 和 1 放置 {} 前,能够起到限制答应的作用(默认为“1”

0是不允许打印读入的内容,1是允许打印的内容

 $0代表整行内容,awk是逐行读取处理,配合$0的效果就是打印文本所有内容

2.3打印行内容及其行号

2.4打印指定行内容

2.5奇偶行打印

2.5.1打印奇数行

先进行awk打印第一行的内容,结束后按照正常顺序打印,但是getline进行跳转,第二行不打印了,最终呈现出奇数行打印

2.5.2打印偶数行

先进行getline跳转至下一行,awk读取跳转后的整行内容,经过逐步跳转读取,形成了只显示偶数行

2.5.3奇偶行打印特殊方式--getline

getline工作过程

1.当getline左右无重定向符号(“<”)或者管道符号(“|”)时,awk首先读取的是第一行,而getline获取的是是光标跳转至下一行的内容(也就是第二行)

原因:getline运行之后awk会改变NF,NR,$0,FNR等内部变量,所以此时读取$0的行号不再为1,而是2。

注意:

FNR:awk当前读取的记录数,其变量值小于等于NR,(比如说当读取完第一个文件后,读取第二个文件,FNR是会从0开始进行,而NR不会)。因此读取两个或两个以上的文件,NR==FNR,可以 判断是不是在读取第一个文件。

2.当getline左右有管道符号或重定向符时,getline则作用定向输入文件,由于文件是刚打开,并没有被awk读入一行,而只是getline读入,所以getline返回的是文件的第一行,而不是跳转至一行输入

2.6条件判断打印

正向判断打印

判断取反打印

还可以直接进行 if 语句判断打印

2.7提取

2.7.1根据$n以及NR提取字段

提取ip地址

提取ipv6地址

2.7.2根据选项-F指定分隔符

以冒号为分隔符,提取第一位即可

2.7.3提取多列内容

以空格符分隔,逗号就是分隔符 

2.7.4提取磁盘已经使用情况,并去除%

第一次以空格为分隔符提取,第二次用-F%分隔提取 

2.7.5匹配以root开头的行

2.7.6匹配以bash结尾的行

2.7.7提取df里面的数字

三、awk的三元表达式

格式:awk     '(条件表达式)?(A表达式或者值):(B表达式或者值)'

四、awk精准筛选

$n (><==)用于对比数值
$n~"字符串"代表第n个字段,包含某个字符串的作用
$n!~"字符串"代表第n个字段,不好含某个字符串的作用
$n=="字符串"代表第n个字段为某个字符串的作用
$n!="字符串"代表第n个字段不为某个字符串的作用
$NF代表最后一个字段

例子:

输出第七个字段包含“bash”所在行的第一个字段和最后一个字段

输出第七个字段不包含“nologin”所在行的第一个字段和最后一个字段

五、内置变量的使用

FS∶ 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF∶ 当前处理的行的字段个数。
NR∶ 当前处理的行的行号(序数)。
$0∶当前处理的行的整行内容。
$n∶ 当前处理行的第n个字段(第n列)。
FILENAME∶ 被处理的文件名。
RS∶ 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
$NF:最后一段
$(NF-1):倒数第二段 

5.1NF-当前处理的行的字段个数

5.1.1显示每行有几个字段

5.1.2打印出每行最后一个字段

5.1.3行倒数第二个字段

5.2NR:当前处理行的行号

5.2.1当前处理行的行号

5.2.2NR==n代表行号等于什么

代表取第二行第一个字段

5.2.3NR%2==0取偶数行

5.2.4NR%2==1取奇数行

5.2.5NR==1,NR==4取区间行

5.2.6取UID数值范围$n>1000

六、awk的分隔符

6.1RS指定分隔符

awk 从文件中读取资料时,将根据 RS 的定义把资料切割成许多条记录, 而 awk 一次仅读入一条记录进行处理。内置变量 RS 的预设值是"\n"。

 但是也可以在使用 BEGIN 模式在操作前进行行分隔符的改变。

通过begin模式先在awk命令执行前将分隔符改为  : ,在打印其行号和每一行内容

6.2指定输出的分隔符

6.2.1FS 输入时的列分隔符

6.3awk结合数组运用

6.3.1awk中定义数组打印

变量i读取数组a的下标,可以形成遍历:

6.3.2去重打印数组

七、关系表达式

关系表达式结果为“真”才会被处理

真:结果为非0值,非空字符串

假:结果为空字符串或0值

n=0,第一行为假,不打印

取反

关系表达式打印奇偶数

八、awk脚本

用awk编写脚本

九、试题练习

9.1统计/etc/fstab文件中每个文件系统类型出现的次数

9.2统计/etc/fstab文件中每个单词出现的次数

9.3提取任意字符串中的数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT行业现状与未来趋势:洞察变革的浪潮

IT行业现状与未来趋势&#xff1a;洞察变革的浪潮 一、引言 随着科技的飞速发展&#xff0c;IT行业已经成为推动全球经济和社会进步的重要力量。从云计算、大数据到人工智能、区块链&#xff0c;每一项技术的革新都在重塑着我们的生活方式和工作模式。本文将探讨当前IT行业的…

Synerg FATAL

Synerg FATAL Synerg使用存在的问题 Synerg使用存在的问题 FATAL: failed to start server: cannot bind address: The specified address is not available from the local machine启动失败的原因&#xff0c;先排除是否有中文路径和电脑IP与软件IP是否一致&#xff0c;用Syn…

什么是TCP协议,TCP协议存在哪些安全挑战

TCP作为是互联网中最重要的协议之一&#xff0c;随着网络技术的不断发展&#xff0c;TCP使用范围越来越广&#xff0c;TCP协议也面临着越来越多的安全挑战。下面我们就来探讨下什么是TCP协议&#xff0c;TCP协议存在哪些安全挑战。 一、了解TCP协议 TCP&#xff08;Transmissi…

AI大模型没那么神秘,3个超简单秘诀让你轻松上手!| 塑造AI时代新思维

01、国内的大模型超优秀 是不是听说ChatGPT的强大功能后&#xff0c;早就手痒了&#xff0c;可是受限于环境&#xff0c;在为无法使用而遗憾呢&#xff1f; 别急&#xff0c;我们国内的大模型也棒棒的&#xff0c;在中文领域已经超越了ChatGPT3.5&#xff0c;还是免费的&…

Python代码:九、十六进制数字的大小

1、题目 计算的世界&#xff0c;除了二进制与十进制&#xff0c;使用最多的就是十六进制了&#xff0c;现在使用input读入一个十六进制的数字&#xff0c;输出它的十进制数字是多少&#xff1f; 2、代码 import sysnum16 input() num10 int(num16,16) print(num10) 3、结…

域信息收集

文章目录 一、基础信息收集1、查看系统详细信息2、查看系统中是否存在杀软3、查看系统开启的服务3、其他命令 二、凭据信息收集2.1 wifi信息2.2 相关工具 三、横向信息收集 一、基础信息收集 收集版本、补丁、服务、任务、防护等。 1、查看系统详细信息 systeminfo # 查看系…

AI绘画原理及工具介绍

市面上的AI绘画工具是运用人工智能技术来辅助或自动完成绘画创作的工具。这些工具依托于深度学习和图像处理技术&#xff0c;能够学习和模仿人类绘画的风格和技巧&#xff0c;从而生成具有艺术感的图像。以下是关于市面上AI绘画工具的详细介绍&#xff1a; 一、原理 数据收集…

快手截流多功能协议引流多线程多账号使用

在市场上&#xff0c;类似的软件售价都在几千元&#xff0c;但我发现这款全新版本的软件已经更新&#xff0c;而且我只需要配合使用谷歌浏览器&#xff0c;稍微调慢一点延时&#xff0c;我就可以像专业人士一样流畅地进行操作。 评论对于我而言是一种艺术&#xff0c;而不仅仅是…

Elasticsearch:向量相似度技术和评分

作者&#xff1a;来自 Elastic Valentin Crettaz 当需要搜索自由文本并且 CtrlF / CmdF 不再有效时&#xff0c;使用词法搜索引擎通常是你想到的下一个合理选择。 词汇搜索引擎擅长分析要搜索的文本并将其标记为可在搜索时匹配的术语&#xff0c;但在理解和理解被索引和搜索的…

[Cocos Creator 3.5赛车游戏]第3节 新建项目

环境已经配置好&#xff0c;现在您将真正的开始开发您的项目&#xff0c;开发项目的第一步是新建项目。所以现在请关闭上一个步骤打开的Cocos Creator窗口&#xff0c;回到CocosDashboard&#xff0c;点击“新建”按钮&#xff1a; 选择“模板”选项卡&#xff0c;因为您即将开…

2024 Google I/O - 提前窥探 Android 15 的新功能与适配

今年年初就简单介绍过 Android 15 预览版 的相关内容&#xff0c;而昨天 Google I/O 宣布了 Android 15 Beta2&#xff0c;作为第二个 Beta 版本 &#xff0c;它已经基本接近它未来的样子&#xff0c;毕竟下个版本就是 Platform Stability 了&#xff0c;所以让我们提前来一睹 …

数字化转型浪潮下,低代码技术如何重塑保险行业?

保险行业进行数字化转型的必要性源于多个方面&#xff0c;随着科技的进步和互联网的普及&#xff0c;客户对保险服务的需求日益个性化和便捷化。他们期望能够随时随地在线购买保险、查询保单信息&#xff0c;并享受到快速、高效的理赔服务。数字化转型可以帮助保险公司满足这些…

docker容器与centos宿主机时间一致设置

1、查看宿主机的系统时间 date -R 2、进入到容器中查看容器系统时间 docker exec -it storage /bin/bash date -R 3、查看容器系统时区 cat /etc/timezone 4、查看宿主机所在时区 timedatectl 5、创建容器时间&#xff0c;并退出进入的容器 6、将宿主日期复制到容器内部&…

微信可以正常连接网络 浏览器访问不了外网

今天工作打开电脑&#xff0c;发现浏览器上不了网&#xff0c;百度都点不开。点击网络诊断&#xff0c;显示网络连接正常。重启了两次&#xff0c;浏览器还是连接不上外网。打开微信&#xff0c;微信还能正常使用。 仔细想一想&#xff0c;我昨天对电脑做了什么&#xff0c;特殊…

【漏洞复现】方正全媒体采编系统密码泄露漏洞

0x01 产品简介 方正全媒体新闻采编系统是一个面向媒体深度融合的技术平台&#xff0c;它以大数据和AI技术为支撑&#xff0c;集成了指挥中心、采集中心、编辑中心、发布中心、绩效考核中心、资料中心等多个功能&#xff0c;全面承载“策采编审发存传评”的融媒体业务流程。 0…

Block常见面试题精华版

block本质是什么&#xff0c;需要注意什么&#xff1f; Block 的本质是一个封装了函数和函数调用环境&#xff08;捕获的变量&#xff09;的 Objective-C 对象。Block 的实现基于 C 语言的函数指针&#xff0c;但它们比普通的函数指针更加强大&#xff0c;因为它们能够捕获周围…

纯血鸿蒙APP实战开发——Worker子线程中解压文件

介绍 本示例介绍在Worker 子线程使用ohos.zlib 提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作&#xff0c;解压成功后将解压路径返回主线程&#xff0c;获取解压文件列表。 效果图预览 使用说明 点击解压按钮&#xff0c;解压test.zip文件&#xff0c;显…

IT行业的现状与未来趋势:技术革新与人才培养的双轮驱动

IT行业的现状与未来趋势&#xff1a;技术革新与人才培养的双轮驱动 在数字化浪潮的推动下&#xff0c;IT行业已经成为全球经济的重要引擎。云计算、大数据、人工智能、物联网、5G通信和区块链等技术的发展&#xff0c;正在深刻地影响着我们的生活和工作。以下是对IT行业现状及…

golang并发模型CSP(Communicating Sequential Processes)

文章目录 golang并发模型CSP&#xff08;Communicating Sequential Processes&#xff09;Golang CSPChannel参考 golang并发模型CSP&#xff08;Communicating Sequential Processes&#xff09; CSP 模型是托尼霍尔&#xff08;Tony Hoare&#xff09;在 1978 年提出的&…