Linux文本三剑客---awk

news2024/9/21 16:48:57

AWK是什么

Linux文本三剑客之一(grep,sed,awk),功能最强大的文本工具。

逐行读取输入的文本内容,默认以空格和tab键作为分隔符。但是多个空格或者tab键的空格,会自动压缩成一个,然后按照指定的模式和条件执行编辑命令

可以在免交互的情况下,实现复杂的文本操作。完成自动化配置。

awk格式

awk '操作符 action' file

操作符:想干啥

action:怎么做

file:处理对象 

例如:

awk 'BEGIN{x=1};{x++};END{处理动作}' 文件名

awk '操作符 {处理动作}' 文件名

{}外部表示定义条件

{}内指定操作

BEGIN对条件做初始化操作

for ((i=1;i<=10;i++))

awk常用选项

-F:指定分隔符,如果是空格,tab键,可以不加

-v:变量赋值,awk无法从外部获取变量

awk的内置变量:

NR:需要处理行号

FS:列分隔符 和F作用一致,如果用FS,则  FS=":"

OFS:输出内容的列分隔符

NF:表示最后一个字段

$n:内置变量

awk '{print NR}' /etc/passwd

显示行号

awk '{print NR $0}' /etc/passwd

显示行号和内容

awk 'NR==3,NR==5{print}' /etc/passwd

第三行和第五行

awk 'NR==3;NR==5{print}' /etc/passwd

第三行到第五行

awk '(NR>=3)&&(NR<=5){print}' test.txt

第三行到第五行

awk 'NR%2==0{print}' test.txt

打印偶数行

awk 'NR%2==1{print}' test.txt

打印奇数行

awk的运算--求幂运算

[root@hj ~]# awk 'BEGIN{print 2^3}'

8

[root@hj ~]# awk 'BEGIN{print 2**3}'

8

awk按行取列(最重要)

awk -F: '{print $2,$NF}' /etc/passwd

大写的NF为最后一列

$x:第几列

表示打印第二列和最后一列

AWK的精确筛选

$n (> < ==);进行数值对比

$n~"字符串" 代表这个字段包含某个字符串

$n!~"字符串" 代表这个字段不包含某个字符串

$n=="字符串" 代表这个字段要和字符串相同

$n!="字符串" 取反,不为某个字段

$NF:代表最后一个字段

下面举几个例子方便大家理解:


1./etc/passwd 输出最后一个字段中包含bash所在行的第一个字段和最后一个字

awk -F: '$NF~"bash" {print $1,$NF}' /etc/passwd

2./etc/passwd 只有第一列是root的行,才打印他的第六行

awk -F: '$1=="root" {print $6}' /etc/passwd

3.输出最后一个字段,不包含bash,打印第一列和第六列

awk -F: '$NF~"bash" {print $1,$6}' /etc/passwd

需要注意:

~:是包含的意思

==:为“是”的意思

二者有很大区别

4.指定第6个字段为/home/hj 而且最后一个字段为/bin/bash 满足条件的输出第一列和最后一列

awk -F: '($6=="/home/hj")&&($NF=="/bin/bash") {print $1.$NF}' /etc/passwd

条件判断打印

结合if语句使用

if $3>500 打印所有

AWK三元表达式

awk三元表达式继承了java,格式和Java也一样

awk '{条件表达式1 ? A表达式或者值:B表达式或者值}' 文件名

awk -F: '{max=($3>=$4)?$3:$4;{print max $0}}' /etc/passwd

?:

if else

if [ $3>=$4 ]

then

echo $3

else

echo $4

fi

文本内容匹配打印

打印/etc/passwd中以root开头的行

awk '/^root/{print}' /etc/passwd

getline函数:getline和管道符以及重定向符号在一块的时候,才有特殊功效

重定向:<> 把其中一个文件的内容传给另外一个

| :输出指定内容,先到定义的变量,再由getline调用变量当中的内容,最后打印出结果。

getline函数运行之后,会改变awk的内置变量,读取的行数也会发生变化,getline在前,就是第一行跳过,打印第二行

getline在后,从第一行开始,跳过第二行,打印的就是奇数

-v给变量赋值

BEGIN模式

对变量初始化。需要初始化变量的时候才会使用

格式

awk 'BEGIN{x=1};{x++};{print x}' test.txt

对行数计算

awk和数组结合使用

awk中如何定义数组

原理:索引的下标是唯一的

a是遍历了所有数组,把结果赋值给i,i在下面继续

本章结束,

下面有几个实例可供参考:

1.日志分割:

2.

free 内存监控

df -h 磁盘监控

top 动态进程监控

top -b -n 1静态

监控内存的百分比(不超过90%,超过警报),磁盘(不超过80%),进程(75%),写成函数库,以定时任务的方式每天早上十点整执行,

函数库调用实现

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

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

相关文章

3D 毛玻璃晶质见证卡

效果展示 页面结构 从上面的效果展示来看&#xff0c;页面主要成员是一张卡片&#xff0c;并且卡片上有三个小矩形&#xff0c;而小矩形上会展示对应的内容。 当鼠标悬停在卡片上时&#xff0c;卡片会随着鼠标的移动而改变视角。 CSS3 知识点 transform-style 属性的 prese…

用OpenCV(Python)获取图像的SIFT特征

import cv2 as cv import numpy as np import matplotlib.pyplot as plt imgcv.imread("../Lena.png") img_graycv.cvtColor(img,cv.COLOR_BGR2GRAY)#创建一个SIFI对象 siftcv.SIFT_create()#使用SIFT对象在灰度图像img_gray中检测关键点&#xff0c;结果存储在变量k…

MATLAB中plot3函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 绘制三维螺旋图 绘制多个线条 使用矩阵绘制多个线条 指定等间距刻度单位和轴标签 将点绘制为不带线的标记 自定义颜色和标记 指定线型 在绘图后修改线条 绘制表中的数据 在 x 和 y 轴上绘制多个表变量 指…

【国漫逆袭】人气榜,小医仙首次上榜,霍雨浩排名飙升,不良人热度下降

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 为了提升作品和角色的讨论度&#xff0c;增加平台的用户活跃度&#xff0c;小企鹅推出了动漫角色榜&#xff0c;该榜单以【年】【周】【日】为单位&#xff0c;通过角色的点赞量和互动量进行排名 上周的动漫角…

解决dockerfile创建镜像时pip install报错的bug

项目场景&#xff1a; 使用docker-compose创建django容器 问题描述 > [5/5] RUN /bin/bash -c source ~/.bashrc && python3 -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple: 0.954 Looking in indexes: https://…

关于PointHeadBox类的理解

forward函数 def forward(self, batch_dict):"""Args:batch_dict:batch_size:point_features: (N1 N2 N3 ..., C) or (B, N, C)point_features_before_fusion: (N1 N2 N3 ..., C)point_coords: (N1 N2 N3 ..., 4) [bs_idx, x, y, z]point_labels (opti…

Folium笔记:HeatMap

在地图上生成热力图 0 举例 import folium from folium.plugins import HeatMap# 创建一个地图对象 m folium.Map(location(1.34084, 103.83637), zoom_start13)# 创建一个坐标点的数据集 data [(1.431656, 103.827896),(1.424789, 103.789902),(1.325781, 103.860446),(1.…

【算法训练-搜索算法 一】【DFS网格搜索框架】岛屿数量、岛屿的最大面积、岛屿的周长

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【搜索算法】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

多卡片效果悬停效果

效果展示 页面结构 从页面的结构上看&#xff0c;在默认状态下毛玻璃卡片是有层次感的效果叠加在一起&#xff0c;并且鼠标悬停在卡片区域后&#xff0c;卡片整齐排列。 CSS3 知识点 transform 属性的 rotate 值运用content 属性的 attr 值运用 实现页面整体布局 <div …

代码随想录算法训练营第五十七天 | 动态规划 part 15 | 392.判断子序列、115.不同的子序列

目录 392.判断子序列思路代码 115.不同的子序列思路代码 392.判断子序列 Leetcode 思路 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]递推公式&#xff1a; 初始化&#xff1a;为0遍历顺序&#xff…

日常工作报告生成器微信小程序源码 支持日报,周报,月报,年终终结

相信大家上班都会有做工作报告的情况吧 那么这款小程序就是大家的福音了 只要输入你的工作内容或者岗位自动生成你的工作报告 支持报,周报,月报,年终终结 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88391810 源码下载2&#xff1a;评论留言或私信…

JVM篇---第二篇

系列文章目录 文章目录 系列文章目录一、简述一下JVM的内存模型二、说说堆和栈的区别三、什么时候会触发FullGC一、简述一下JVM的内存模型 1.JVM内存模型简介 JVM定义了不同运行时数据区,他们是用来执行应用程序的。某些区域随着JVM启动及销毁,另外一 些区域的数据是线程性独…

自动化测试框架详解

一、什么是自动化测试框架 在了解什么是自动化测试框架之前&#xff0c;先了解一下什么叫框架&#xff1f;框架是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法;另一种定义认为&#xff0c;框架是可被应用开发者定制的应用骨架。前者是从应…

知识图谱-Neo4j使用详解

neo4j应用场景 知识图谱欺诈检测实时推荐引擎反洗钱主数据管理供应链管理增强网络和IT运营管理能力数据谱系身份和访问管理材料清单 图数据库neo4j简介 关系查询&#xff1a;mysql和neo4j性能对比 neo4j的特性和优点&#xff1a; Neo4j-CQL简介 neo4j的Cypher语言是为处理图…

96.qt qml-http之XMLHttpRequest介绍详解使用

在QML中我们可以通过XMLHttpRequest 来实现http/https访问网络接口,接下来我们先来学习XMLHttpRequest类的常用部分、 由于QML的XMLHttpRequest少部分参数是没有的,所以本章来单独讲解下。下章我们来实现旋转请求按钮以及通用的JSON请求模板方法 1.XMLHttpRequest初步使用 …

计算机网络(六):应用层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 应用层概述 应用层是计算机网络体系结构的最顶层&#xff0c;是设计和建立计算机网络的最终目的&#xff0c;也是计算机网络中发展最快的部分 早期基于文本的应用 (电子邮件、远程登…

Boost程序库完全开发指南:1.1-C++基础知识点梳理

主要整理了N多年前&#xff08;2010年&#xff09;学习C的时候开始总结的知识点&#xff0c;好长时间不写C代码了&#xff0c;现在LLM量化和推理需要重新学习C编程&#xff0c;看来出来混迟早要还的。 1.shared_ptr 解析&#xff1a;shared_ptr是一种计数指针&#xff0c;当引…

【Linux】【网络】工具:httplib 库的安装与简单使用

文章目录 1. 下载 httplib 库2. 从 Win 传输文件到 Linux3. 解压缩 httplib 库1. struct Request 结构体源码展示2. struct Reponse 结构体源码展示3. httplib 库 Server 类4. httplib 库 Client 类5. 搭建简易 server 服务器6. 搭建简易 client 客户端 1. 下载 httplib 库 要求…

结构体和联合体

目录 一.结构体 1.1什么是结构体&#xff1f; 1.2结构的声明 1.3特殊声明 1.4结构的自引用 1.5 结构体变量的定义和初始化 1.6 结构体内存对齐 1.7修改默认对齐数 二.联合体 2.1联合类型的定义 2.2联合的特点 2.3联合大小的计算 一.结构体 1.1什么是结构体&#xf…

【milkv】max98357a驱动添加speaker

文章目录 一、电路1.1 duo音频接口1.2 I2S2连接 二、I2S2介绍2.1 参考cv182x的dts实现2.2 参考cv1835_fpga2.3 cv180x2.4 改动——保留i2s2.5 I2S小结 三、参考资料3.1 文章3.2 手册 四、驱动路径五、添加codec驱动——max98357a5.1 config5.2 dtsi5.3 dai_driver 六、查看plat…