文本三剑客-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,一经查实,立即删除!

相关文章

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…

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 # 查看系…

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

在市场上&#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…

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

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

03-行为型模式(共10种)

上一篇: 02-结构型设计模式(共7种) 1. Strategy(策略模式) 策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装到独立的类中&#xff0c;并使它们可以互相替换。这样可以使算法的变化独立于使用算法的客户端。 在 C 中&#xff0c;策略模式…

20-LINUX--网络编程

一. 主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序&#xff0c;不同的主机采用的字节序列可能不同。大 端字节序是指一个整数的高位字节存储在内存的低地址处&#xff0c;低位字节存储在内存的高地址 处。小端字节序则是指整数的高位字节存储在内存的高…

保温杯盖一般是什么材质的?

保温杯盖一般是什么材质的&#xff1f; Pi材料&#xff0c;也称为聚酰亚胺&#xff08;Polyimide&#xff09;&#xff0c;具有多种特殊性能和应用领域&#xff0c;主要作用如下&#xff1a; 1. 高温耐性&#xff1a;Pi材料具有出色的高温稳定性&#xff0c;能够在高温环境下长…

国内常用的项目管理软件有哪些?六大企业级项目管理软件大盘点

一、 奥博思 PowerProject 项目管理软件 官方网址&#xff1a;http://www.powerproject.com.cn 北京奥博思软件技术有限公司自成立以来&#xff0c;一直专注于企业级项目管理软件的开发及解决方案&#xff0c;致力于为各类企业&#xff08;制造业、IT交付、金融、汽车及汽车零…

供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)

概述 悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库&#xff0c;结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获&#xff0c;发现大量的开源组件恶意包投毒攻击事件。在2024年4月份&#xff0c;悬镜供应链安全情报中心在NPM官方仓库&#xff08;…

什么是检索增强生成(Retrieval Augmented Generation)?RAG 架构如何实现?

检索增强生成&#xff08;Retrieval Augmented Generation&#xff09;时代 在不断发展的生成人工智能世界中&#xff0c;检索增强生成 (RAG) 标志着一项重大进步&#xff0c;它将检索模型的准确性与生成模型的创造性相结合&#xff0c;达到了准确&创新的更高层级。 这种…

Nginx 7层负载均衡的搭建

目录 负载均衡的理解 修改配置文件 测试 1. 选择在 DMZ 区测试&#xff0c;使用 db 服务器进行测试 2.选择在外网测试负载均衡效果 负载均衡的理解 负载均衡&#xff1a;load balancer&#xff0c;简称LB Nginx 既是一个 web 服务器软件&#xff0c;也是一个负载均衡软件&a…