Linux sed命令
目录
- 一. 去除单个指定文本的换行符
- 二. 去除多个指定文本的换行符
- 三. 抽取出指定数据
- 3.1 分别抽取SPLREQUEST和SPLEND的数据
- 3.2 通过join命令将文件合并
- 3.3 抽取出指定的数据
- 3.4 去除换行符,整合数据为一行
一. 去除单个指定文本的换行符
👉 info.txt
Some text before
2023 Some text after
Another 2023 line with 2023
20232023A line with consecutive 2023
Last line 2023
⏹解析
:loop; N; $!b loop;用于循环整个文件s/\n2023/ 2023/g用于替换,将换行符2023替换为空格2023
cat info.txt | sed ':loop; N; $!b loop; s/\n2023/ 2023/g'
💪效果
Some text before 2023 Some text after
Another 2023 line with 2023 20232023A line with consecutive 2023
Last line 2023
二. 去除多个指定文本的换行符
👉 a.txt
Start 2023-11-05 05:15:10
eventController=enent1
MemberId=uuidw3e
ExecTime=1000
Start 2023-11-05 05:17:10
eventController=enent2
MemberId=uuidA234
ExecTime=2000
⏹解析
s/\n\([eME]\)/ \1/g用于将 换行符e开头的数据,换行符M开头,换行符E开头的数据的换行符去掉,并添加一个空格。
cat ./a.txt | sed ':loop; N; $!b loop; s/\n\([eME]\)/ \1/g'
💪效果
Start 2023-11-05 05:15:10 eventController=enent1 MemberId=uuidw3e ExecTime=1000
Start 2023-11-05 05:17:10 eventController=enent2 MemberId=uuidA234 ExecTime=2000
三. 抽取出指定数据
如下所示,程序运行后生成了如下log
- 开头的数字(110120,123456等)代表了线程号
SPLREQUEST表示请求的开始,SPLEND表示请求的终了。同一个请求的SPLREQUEST和SPLEND的线程号相同。- 因为系统上线运行后,同一时刻可能会存在多个并发请求,所以同一个请求在同一个时刻打印的log可能分布在日志文件的不同的地方。
- 我们可以根据线程号将同一个请求的SPLREQUEST和SPLEND相关的数据聚合到同一行,然后进行处理。
👉 20231126-2.log
110120 SPLREQUEST 内容1 AAA memberID=1 eventController=event1
110120 SPLEND ExecTime=200 ResultCode=200
123456 SPLEND ExecTime=300 ResultCode=200123456 SPLREQUEST 内容2 BBB memberID=2 eventController=event2
123444 SPLREQUEST 内容3 CCC memberID=3 eventController=
123434 SPLREQUEST 内容4 DDD memberID= eventController=event4123444 SPLEND ExecTime=200 ResultCode=200
123434 SPLEND ExecTime=400 ResultCode=200
345345 SPLEND ExecTime=500 ResultCode=200
345345 SPLREQUEST 内容5 EEE memberID=5 eventController=event5
674545 SPLREQUEST 内容6 FFF memberID=6 eventController=event6674545 SPLEND ExecTime=400 ResultCode=200
3.1 分别抽取SPLREQUEST和SPLEND的数据
- 在日志文件中,请求开始的日志和请求结束的日志所在的位置都是错乱无规律的。
- 我们可以先将请求开始相关的数据抽取到一个文件中
- 再将请求终了的相关的数据抽取到一个文件中
- 再将上述得到的两个文件合并
⏹将SPLREQUEST相关的数据抽取到文件中
grep SPLREQUEST ./20231126-2.log > SPLREQUEST.txt
SPLREQUEST.txt
110120 SPLREQUEST 内容1 AAA memberID=1 eventController=event1
123456 SPLREQUEST 内容2 BBB memberID=2 eventController=event2
123444 SPLREQUEST 内容3 CCC memberID=3 eventController=
123434 SPLREQUEST 内容4 DDD memberID= eventController=event4
345345 SPLREQUEST 内容5 EEE memberID=5 eventController=event5
674545 SPLREQUEST 内容6 FFF memberID=6 eventController=event6
⏹将SPLEND相关的数据抽取到文件中
grep SPLEND ./20231126-2.log > SPLEND.txt
SPLEND.txt
110120 SPLEND ExecTime=200 ResultCode=200
123456 SPLEND ExecTime=300 ResultCode=200
123444 SPLEND ExecTime=200 ResultCode=200
123434 SPLEND ExecTime=400 ResultCode=200
345345 SPLEND ExecTime=500 ResultCode=200
674545 SPLEND ExecTime=400 ResultCode=200
3.2 通过join命令将文件合并
⏹由于请求开始和请求终了日志的线程号都是相同的,且都在第一列,因此可以通过join命令将两个文件通过线程号连接起来
join SPLREQUEST.txt SPLEND.txt > ALL.txt
ALL.txt
110120 SPLREQUEST 内容1 AAA memberID=1 eventController=event1 SPLEND ExecTime=200 ResultCode=200
123456 SPLREQUEST 内容2 BBB memberID=2 eventController=event2 SPLEND ExecTime=300 ResultCode=200
123444 SPLREQUEST 内容3 CCC memberID=3 eventController= SPLEND ExecTime=200 ResultCode=200
123434 SPLREQUEST 内容4 DDD memberID= eventController=event4 SPLEND ExecTime=400 ResultCode=200
345345 SPLREQUEST 内容5 EEE memberID=5 eventController=event5 SPLEND ExecTime=500 ResultCode=200
674545 SPLREQUEST 内容6 FFF memberID=6 eventController=event6 SPLEND ExecTime=400 ResultCode=200
3.3 抽取出指定的数据
⏹抽取出线程号,memberID,eventController,ExecTime。
-o表示 只显示匹配到的数据^\S*表示 非空开头的数据,在此案例中特指线程号
grep -o -a -e "^\S*" -e "eventController=\S*" -e "memberID=\S*" -e "ExecTime=\S*" ALL.txt > pick_data.txt
pick_data.txt
110120
memberID=1
eventController=event1
ExecTime=200
123456
memberID=2
eventController=event2
ExecTime=300
123444
memberID=3
eventController=
ExecTime=200
123434
memberID=
eventController=event4
ExecTime=400
345345
memberID=5
eventController=event5
ExecTime=500
674545
memberID=6
eventController=event6
ExecTime=400
3.4 去除换行符,整合数据为一行
cat pick_data.txt | sed ':loop; N; $!b loop; s/\n\([emE]\)/ \1/g'
110120 memberID=1 eventController=event1 ExecTime=200
123456 memberID=2 eventController=event2 ExecTime=300
123444 memberID=3 eventController= ExecTime=200
123434 memberID= eventController=event4 ExecTime=400
345345 memberID=5 eventController=event5 ExecTime=500
674545 memberID=6 eventController=event6 ExecTime=400
相关文章:
Linux sed命令
目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符,整合数据为一行 一. 去除单个指定文本的换行符 👉 info.txt …...
Nginx反向代理实现负载均衡+Keepalive实现高可用
目录 实现负载均衡 实现高可用 实现负载均衡 Nginx的几种负载均衡算法: 1.轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。 2.权重…...
实用高效 无人机光伏巡检系统助力电站可持续发展
近年来,我国光伏发电行业规模日益壮大,全球领先地位愈发巩固。为解决光伏电站运维中的难题,浙江某光伏电站与复亚智能达成战略合作,共同推出全自动无人机光伏巡检系统,旨在提高发电效率、降低运维成本,最大…...
Django框架之csrf跨站请求
目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验: 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器: 【…...
[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399
文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…...
自动语音识别 支持86种语言 Dragon Professional 16 Crack
从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…...
i社为什么不出游戏了?
I社,即国际知名的游戏公司,近来为何鲜有新游问世?曾经风靡一时的游戏开发者,如今为何陷入了沉寂?这其中的种种原因,值得我们深入剖析。 首先,I社近期的沉寂可能与其内部管理层的调整和战略规划…...
Harmony开发 eTs公共样式抽取
Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用,类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…...
Java中的方法
在Java中,方法是一个重要的概念,它用于组织和执行可重复使用的代码块。本文将详细介绍Java中方法的概念、定义和使用方法,以及一些常见的编程技巧和注意事项。 一、方法的概念 在Java中,方法是用来执行特定任务的代码块。它封装了…...
存算一体还是存算分离?谈谈数据库基础设施的架构选择
从一则用户案例说起 某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万 IOPS…...
go模版引擎的使用~~
go模板语句 以下是一些go语言模板引擎的一些简单知识和使用 基础语法 重要!!!: 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页࿰…...
我们为什么要进行敏捷开发培训
敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考: 理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一…...
【算法萌新闯力扣】:合并两个有序链表
力扣题目:合并两个有序链表 开篇 今天是备战蓝桥杯的第24天及算法村开营第2天。根据算法村的讲义,来刷链表的相关题目。今天要分享的是合并两个有序链表。 题目链接: 21.合并两个有序链表 题目描述 代码思路 通过创建一个新链表,然后遍历…...
BEV+Transformer架构加速“上车”,智能驾驶市场变革开启
BEVTransformer成为了高阶智能驾驶领域最为火热的技术趋势。 近日,在2023年广州车展期间,不少车企及智能驾驶厂商都发布了BEVTransformer方案。其中,极越01已经实现了“BEVTransformer”的“纯视觉”方案的量产,成为国内唯一量产…...
Java中的jvm——面试题+答案(JVM的一些高级概念、调优技巧、垃圾回收算法等)——第13期
当涉及到Java虚拟机(JVM)时,面试官可能涉及更深入的问题,涵盖性能调优、垃圾回收算法、类加载机制等方面。 什么是类加载机制?请解释类加载的过程。 答案: 类加载是将类的.class文件加载到内存中的过程&…...
Android修行手册-ViewPager定制页面切换以及实现原理剖析
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
Mycat实现读写分离
Mycat实现读写分离 Mycat支持MySQL主从复制状态绑定的读写分离机制。这里实现的也是基于MySQL主从复制的读写分离。 MySQL主从复制配置 首先要配置MySQL的主从复制,这里配置的是一主一次从。可以参考下面的文章。 https://blog.csdn.net/wsb_2526/article/detail…...
Ceph----CephFS文件系统的使用:详细实践过程实战版
CephFS 介绍 是一个基于 ceph 集群 且兼容 POSIX 标准的文件系统。 创建 cephfs 文件系统时 需要在 ceph 集群中添加 mds 服务,该服务 负责处理 POSIX 文件系统中的 metadata 部分, 实际的数据部分交由 ceph 集群中的 OSD 处理。 cephfs 支持以内核模块…...
python tkinter 使用(七)
python tkinter 使用(七) 本篇文章主要讲下tkinter 中的message 控件. Message控件可以用于在窗口中显示一段文本消息. 以下是个简单的例子: #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/11/24 上午11:38 .Email:Describe: "…...
17. Python 数据库操作之MySQL和SQLite实例
目录 1. 简介2. 使用PyMySQL2. 使用SQLite 1. 简介 数据库种类繁多,每种数据库的对外接口实现各不相同,为了方便对数据库进行统一的操作,大部分编程语言都提供了标准化的数据库接口,用户不需要了解每种数据的接口实现细节&#x…...
用LiuJuan Z-Image做创意设计:生成概念艺术人像与角色设定图
用LiuJuan Z-Image做创意设计:生成概念艺术人像与角色设定图 你是否曾经为角色设计而苦恼?无论是游戏角色、小说人物还是品牌IP形象,传统设计流程往往需要反复修改草图、调整细节,耗费大量时间。现在,借助LiuJuan Z-I…...
vLLM-v0.17.1:从MATLAB算法到生产部署的桥梁
vLLM-v0.17.1:从MATLAB算法到生产部署的桥梁 1. 科研与生产的鸿沟 在算法研发领域,MATLAB长期占据着不可替代的地位。它的矩阵运算能力、丰富的工具箱和直观的语法,使其成为科研人员和算法工程师的首选工具。然而,当这些精心设计…...
OpenClaw配置备份:千问3.5-9B模型切换无忧方案
OpenClaw配置备份:千问3.5-9B模型切换无忧方案 1. 为什么需要配置备份 上周我的主力开发机突然硬盘故障,重装系统后不得不从头配置OpenClaw环境。当我面对空白的终端,回忆那些复杂的模型参数、飞书通道密钥和自定义技能时,才意识…...
[特殊字符]Liberty Parser 可视化工具
一个纯前端、开箱即用的 .lib 文件解析 可视化分析工具。 🖼️ 工具界面一览 (这里你可以放截图,效果很好) 工具支持: 📂 直接上传 .lib 文件🔍 实时筛选 cell / pin📊 可视化展…...
OpenClaw+千问3.5-9B:自动化周报生成与邮件发送
OpenClaw千问3.5-9B:自动化周报生成与邮件发送 1. 为什么需要自动化周报工具 每周五下午3点,我的日历总会准时弹出提醒:"该写周报了"。这个看似简单的任务却常常让我陷入两难——要么对着空白的文档发呆半小时不知从何写起&#…...
HLS高层次综合开发应用
一、HLS高层次综合开发应用 1.怎么利用编译指令(pragma)来控制各种粗细粒度的流水和并行,怎么把数组进行分块等等。这样的设计结果就会远远好于使用通用CPU。然而还有一个问题是,最后性能优化的HLS C/C代码可能会很长,…...
HTML压缩工具本地运行卡顿怎么办_在线替代或参数优化【说明】
本地HTML压缩卡顿时,可调参降载、换轻量工具、用在线服务、分块处理或禁用IDE校验功能。例如调--collapse-whitespace参数、换rust-html-minifier、分块提取body压缩、关闭VS Code HTML格式化。如果您在本地运行HTML压缩工具时遇到卡顿现象,可能是由于工…...
【国家级数字农业项目技术白皮书节选】:PHP轻量化时序数据处理框架如何扛住每秒8700+传感器上报?
第一章:农业 PHP 物联网数据可视化案例在智慧农业实践中,PHP 作为轻量级服务端语言,常被用于快速构建物联网数据聚合与可视化看板。本案例基于 ESP32 传感器节点采集土壤湿度、环境温湿度及光照强度,通过 HTTP POST 将 JSON 数据推…...
当Windows 10的OneDrive无法彻底卸载时,这个批处理脚本是你的终极解决方案
当Windows 10的OneDrive无法彻底卸载时,这个批处理脚本是你的终极解决方案 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 你是否…...
前端-Node.js
1. 什么是Node.jsNode.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。作用:使用Node.js编写服务端程序。编写数据接口,提供网页资源浏览功能等等。前端工程化:为后续学习Vue和React等框架做铺…...
