Linux awk案例

目录

  • 1. 查询时间超过2000毫秒的请求
  • 2. 查询指定列组合出现的次数
  • 3. 统计所有文件的大小
  • 4. 获取大于指定大小的文件名,并按照从大到小排序
  • 5. grep指定字段后,使用awk列转行
  • 6. 查询第四个字段等于指定值的内容


1. 查询时间超过2000毫秒的请求

✅log: 20231119-1.log

2023:11:19 09:07:10 SPLEND=2000 请求开始 110 END
2023:11:19 09:07:11 SPLEND=1000 请求开始 120 END
2023:11:19 09:07:12 SPLEND=3000 请求开始 119 END
2023:11:19 09:07:13 SPLEND=4000 请求开始 156 END
2023:11:19 09:07:14 SPLEND=4000 请求开始 157 END

⏹查询时间超过2000毫秒的请求

grep -a SPLEND ./20231119-1.log | awk 'BEGIN {FS="="} {if($NF>2000) print $0}'

👇结果

2023:11:19 09:07:10 SPLEND=2000 请求开始 110 END
2023:11:19 09:07:12 SPLEND=3000 请求开始 119 END
2023:11:19 09:07:13 SPLEND=4000 请求开始 156 END
2023:11:19 09:07:14 SPLEND=4000 请求开始 157 END

2. 查询指定列组合出现的次数

✅log: 20231119-2.log

你好 世界 110120 AAA
世界 你好 112123 BBB
你好 世界 343434 CCC
世界 你好 343434 DDD
世界 你好 565656 WWW
hello world 23232 EEE
hello world 23423 FFF
world hello 23232 GGG
world hello 34344 HHH

⏹查询第2列和第1列组合之后,出现的次数

cat ./20231119-2.log | awk '{cnt[$2" "$1]+=1;} END {for (i in cnt) print i,cnt[i]"回"}'

👇结果

world hello 2回
hello world 2回
你好 世界 3回
世界 你好 2回

3. 统计所有文件的大小

⏹有如下文件

fengyehong@ubuntu:~/uwsgi-2.0.18/core$ ls -l ./m*.c
-rw-rw-r-- 1 fengyehong fengyehong 32766 Feb  9  2019 ./master.c
-rw-rw-r-- 1 fengyehong fengyehong 11714 Feb  9  2019 ./master_checks.c
-rw-rw-r-- 1 fengyehong fengyehong  7616 Feb  9  2019 ./master_events.c
-rw-rw-r-- 1 fengyehong fengyehong 49900 Feb  9  2019 ./master_utils.c
-rw-rw-r-- 1 fengyehong fengyehong 31952 Feb  9  2019 ./metrics.c
-rw-rw-r-- 1 fengyehong fengyehong  6147 Feb  9  2019 ./mount.c
-rw-rw-r-- 1 fengyehong fengyehong 11774 Feb  9  2019 ./mule.c
  • total:定义了一个变量
  • $5:第5个字段,即文件大小的字段。
  • 通过{total += $5}累加完成之后,在END{ }代码块中将结果打印出来
ls -l ./m*.c | awk '{total += $5} END {print "总大小: ", total/1024, "KB"}'

在这里插入图片描述


4. 获取大于指定大小的文件名,并按照从大到小排序

  • if($5 > 100000):指定获取大于100000byte的文件
  • -k5,5:使用第5列作为排序的关键字段
  • n:使用数字顺序排序
  • r:逆向排序,从大到小排序
# 从小到大排序
ls -l ~/uwsgi-2.0.18/core | awk '{if($5 > 100000) print $0}' | sort -k5,5n
# 从大到小排序
ls -l ~/uwsgi-2.0.18/core | awk '{if($5 > 100000) print $0}' | sort -k5,5nr

在这里插入图片描述


5. grep指定字段后,使用awk列转行

info.txt

110120 SPLREQUEST name=東川雄一 AAA memberID=1 tel=080-1111-1111 SPLEND ExecTime=200 ResultCode=200
123456 SPLREQUEST name=西村祐二 BBB memberID=2 tel=080-2222-2222 SPLEND ExecTime=300 ResultCode=200
123444 SPLREQUEST name=南山裕三 CCC memberID=3 tel=080-3333-3333 SPLEND ExecTime=200 ResultCode=200
123434 SPLREQUEST name=北岡優四 memberID= tel=080-4444-4444 SPLEND ExecTime=400 ResultCode=200
345345 SPLREQUEST name=田中様 EEE memberID=5 tel=080-5555-5555 SPLEND ExecTime=500 ResultCode=200
674545 SPLREQUEST name=竹下様 FFF memberID=6 tel=080-6666-6666 SPLEND ExecTime=400 ResultCode=200

🤪需求:从文件中获取第一个字段,name字段,tel字段,ExecTime字段,并转为一行

  • 获取每个字段可以使用 -e配置项,然后配合正则表达式\S*获取非空内容
  • -o:仅获取匹配到的内容,不获取行的其他内容
  • 仅使用grep命令得到的结果都不在一行上,而应该是每4行一组
  • 使用awk命令的ORS指定文本输出时的换行符
  • ORS = (NR % 4 == 0) ? "\n" : ","
    • 如果当前行号不是4的倍数,还不该换行,将换行符指定为,,不会引起换行,从而实现列转行。
    • 如果当前行号是4的倍数,说明每4行已经变为一行,此时将换行符置为\n,实现没一行有4个字段。
grep -a -o -e "^\S*" -e "name=\S*" -e "tel=\S*" -e "ExecTime=\S*" ./info.txt | awk 'ORS = (NR % 4 == 0) ? "\n" : ","'

在这里插入图片描述


6. 查询第四个字段等于指定值的内容

info.txt

110120	SPLREQUEST	name=東川雄一	994	memberID=1	tel=080-1111-1111	SPLEND	ExecTime=200	ResultCode=200
123456	SPLREQUEST	name=西村祐二	889	memberID=2	tel=080-2222-2222	SPLEND	ExecTime=300	ResultCode=200
123444	SPLREQUEST	name=南山裕三	994	memberID=3	tel=080-3333-3333	SPLEND	ExecTime=200	ResultCode=200
123434	SPLREQUEST	name=北岡優四	110	memberID=	tel=080-4444-4444	SPLEND	ExecTime=400	ResultCode=200
345345	SPLREQUEST	name=田中様	110	EEE	memberID=5	tel=080-5555-5555	SPLEND	ExecTime=500	ResultCode=200
674545	SPLREQUEST	name=竹下様	114	FFF	memberID=6	tel=080-6666-6666	SPLEND	ExecTime=400	ResultCode=200
  • 需求:查询第四个字段的值为994所在行的内容
  • 每个字段使用Tab分隔,所以使用-F'\t'
awk -F'\t' '$4 == "994" {print $0}' ./info.txt | nkf -w8

在这里插入图片描述

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

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

相关文章

【栈】【力扣】括号的最大嵌套深度

目录 题目描述 解答(C语言) 解答(c) 解答(python) 题目描述 给定 有效括号字符串 s,返回 s 的 嵌套深度。嵌套深度是嵌套括号的 最大 数量。 示例 1: 输入:s &quo…

[Leetcode 216][Medium]组合总和 III--回溯

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 对于组合问题,首先要想到回溯法。那么可以根据回溯法模版进行设计。 void backtrace(元素){if(满足题目要求的条件){保存目前路径/状态/结果;return;}for循环,往目前状态相邻的所…

区块链通证系统功能分析

区块链通证系统功能分析涉及多个关键方面,以确保系统能够满足不同的业务需求和合规性要求。 同质与非同质通证:区块链通证系统需要支持同质通证(如ERC-20)和非同质通证(如ERC-721),以适应不同类…

红帽与SUSE对RHEL/CentOS 7系列延长生命周期支持策略:保障企业Linux系统的持续安全与稳定

一、前言 昨天有幸参加了一个活动,其一主办方是SUSE,感谢SUSE的工程师提供相关信息。 在本篇文章中,我们将深入探讨两个关键的Linux操作系统支持方案:“红帽企业版 Linux 7(RHEL 7)延长生命周期支持”和“…

《NLP自然语言处理》—— 关键字提取之TF-IDF算法

文章目录 一、TF-IDF算法介绍二、举例说明三、示例:代码实现四、总结 一、TF-IDF算法介绍 TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一个词…

机器人大会引领产业动向,卓翼飞思绘制无人系统教科研新蓝图

8月21日,万众瞩目的2024世界机器人大会暨博览会在北京亦创国际会展中心盛大开幕。这场为期5天,集“展览”“论坛”“赛事”于一体的机器人盛会,反映了当下机器人领域的繁荣生态。据官方统计数据,今年现场逛展观众高达25万人次&…

揭秘!糖尿病:从绝望到希望的治愈之路

在这个快节奏、高压力的时代,糖尿病这一“甜蜜的负担”正悄然影响着越来越多人的生活。面对这一全球性的健康挑战,许多患者心中都萦绕着一个共同的疑问:“糖尿病,真的能治好吗?”今天,就让我们一起揭开糖尿…

研究生深度学习入门的十天学习计划------第五天

第5天:深度学习中的模型评估与调优 目标: 掌握深度学习模型的评估方法,理解如何通过超参数调优和模型集成来提升模型性能。 5.1 模型评估指标 在深度学习中,不同的任务需要不同的评估指标来衡量模型的性能。常见的评估指标包括…

《黑神话:悟空》:30%抽成真相

《黑神话:悟空》自建服务器出售?揭秘游戏界的30%抽成真相! 近年来,随着游戏行业的迅猛发展,游戏开发商与发行平台之间的利益分配问题逐渐成为业界关注的焦点。其中,《黑神话:悟空》作为一款备受…

排序算法:

冒泡排序: 从列表的第一个数字开始进行比较,判断该数和下一个数之间的大小关系,如果该数比右边的数大,则交换位置;否则不变。一般一轮可以确定最大的数字,在列表的最后一位。 代码: 注意&…

【设计模式】创建型模式——简单工厂模式

文章目录 一、创建型模式1. 包含模式1.1 工厂模式1.2 建造者模式1.3 原型模式1.4 单例模式 二、工厂模式1. 概要1.1 意图1.2 主要解决问题1.3 何时使用1.4 如何解决1.5 关键代码1.6 使用场景1.7 优点1.8 缺点1.9 简单工厂实现 2. 简单工厂模式2.1 模式结构2.2 实例2.3 模式定义…

python实战一:合并多个Excel中数据

看不懂可以跟着视频学一下,关于基础课程项目也可以私聊我! 视频源码: 链接:https://pan.quark.cn/s/2055653f735b 之前我们已经学习了如何读取和写入Execl数据,今天我们来用一个实例来进行表格的合并。如下是 2021年…

Durid解析SQL语句

在外面的需求中,有很多需要解析SQL语句的地方,我们采用Durid来进行解析。 Durid可以将sql进行详细的拆分成多个部分 解析where解析SQLSelectItem解析update语句解析limit解析group by 还可以动态修改sql,比如在原sql上增加条件修改sql运行的…

YOLOv9改进策略【模型轻量化】| ShufflenetV2,通过通道划分构建高效网络

一、本文介绍 本文记录的是基于ShufflenetV2的YOLOv9目标检测轻量化改进方法研究。FLOPs是评价模型复杂独的重要指标,但其无法考虑到模型的内存访问成本和并行度,因此本文在YOLOv9的基础上引入ShufflenetV2,使其在在保持准确性的同时提高模型…

多线程篇(基本认识 - 锁优化)(持续更新迭代)

目录 一、前言 二、阿里开发手册 三、synchronized 锁优化的背景 四、Synchronized的性能变化 1. Java5之前:用户态和内核态之间的切换 2. java6开始:优化Synchronized 五、锁升级 1. 无锁 2. 偏向锁 2.1. 前言 2.2. 什么是偏向锁 2.3. 偏向…

ChatTTS 长音频合成和本地部署2种方式,让你的“儿童绘本”发声的实战教程(文末有福利)

接上文(GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(附源码)),老牛同学通过 GLM-4-Flash 文生文和 CogView-3 文生图大模型,和大家一起编写了一个图文并茂的儿童绘本应用&am…

先进制造aps专题二十五 openai的ai大模型设计也使用了aps用的并行遗传算法

openai的ai大模型设计是不是很神秘? 其实不神秘,看国内最新的一个团队招人 新型研究机构,AI团队招收ai大模型算子搜索、大模型训练与推理算法 ai大模型算子搜索:方向:算子辅助搜索工具的实现与开发、群体遗传算法研…

从默默无名到销量激增,极越CEO哭了

文 | 智能相对论 作者 | 周晚 8月28日,极越汽车CEO夏一平在接受媒体采访的时候泪洒当场! 倒不是因为极越汽车销量寥寥,而是因为突然销量激增,他带领的极越团队走出低谷,当他们回过头去看今年上半年的巨大压力&#…

欧拉 函数

互质: 互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者特殊情况。 (1和-1与所有整数互质,而且它们是唯一与0互质的整数) 互质的判断方法&…

面试(九)

目录 一. 僵尸进程/孤儿进程/守护进程 二 线程的同步和异步 三. 线程间通信 3.1 共享内存 3.2 互斥锁 3.3 条件变量 3.4 信号量 3.5 读写锁 3.6 事件 3.7 线程局部存储 四. 进程间通信 3.1 管道 3.2 消息队列 3.3. 共享内存 3.4 信号量 3.5 套接字 3.6 内存映…