linux三剑客之流编辑器sed
sed(stream editor)是Linux和Unix系统中一个非常强大的文本处理工具。它主要用于对文本数据进行过滤和转换。sed 可以在不打开文件的情况下,直接对输入流进行操作,并且可以将结果输出到标准输出或文件。
基本语法:
sed [options] 'script' [input [output]]'
- [options]:sed 的命令行选项,如 -i 用于直接修改文件。
- script:定义了要执行的编辑操作的脚本。
- [input]:输入文件,默认为标准输入(stdin)。
- [output]:输出文件,默认为标准输出(stdout)。
常用sed命令:
- sed 's/pattern/replacement/':替换命令,将pattern替换为replacement。
-
- g:全局替换,替换行中的所有匹配项。
- p:打印,只打印匹配的行。
- n:原样打印,不进行任何替换。
- sed -n 'pattern':只打印匹配pattern的行。
- sed -e 'command1' -e 'command2':执行多个命令。
- sed -i 's/old/new/' file:直接修改文件内容,将old替换为new。
- sed 'N;N;s/\n//g':合并连续的空行。
- sed '1,5 s/.*/Hello/':对文件的第1行到第5行执行替换操作。
- sed '$!N;s/\n//g':除了最后一行外,合并所有行,删除换行符。
- sed -n '1,5p;1,5!d':打印文件的第1行到第5行,并删除这些行。
正则表达式:
sed 使用基本正则表达式(Basic Regular Expressions, BRE)进行模式匹配。在sed中使用正则表达式时,你需要对特殊字符进行转义。
示例:
- 将文件input.txt中所有的old替换为new,并将结果保存到output.txt:
sed 's/old/new/' input.txt > output.txt
- 直接在file.txt文件中替换所有的old为new:
sed -i 's/old/new/' file.txt
- 打印文件的第1行到第3行:
sed -n '1,3p' file.txt
- 删除文件中的所有空行:
复制
sed '/^$/d' file.txt
应用场景
sed(stream editor)是一个流编辑器,它在Unix和类Unix系统中广泛应用于各种文本处理任务。以下是一些典型的sed应用场景:
1.文本替换:
sed 's/oldtext/newtext/g' inputfile > outputfile
这个命令会在inputfile中查找所有的oldtext字符串,并将其替换为newtext,结果会被输出到outputfile。
2.文本删除:
sed '/pattern/d' inputfile > outputfile
这个命令会删除inputfile中所有包含pattern的行,并将其余内容输出到outputfile。
3.文本插入:
sed '5i\ New text' inputfile > outputfile
这个命令会在inputfile的第5行之前插入New text,并将结果输出到outputfile。
4.文本追加:
sed '$a\ Additional text' inputfile > outputfile
这个命令会在inputfile的末尾追加Additional text,并将结果输出到outputfile。
5.文本格式化:
sed '=; s/^/ /' inputfile > outputfile
这个命令会将inputfile中的每一行都缩进,并在文件顶部添加行号,结果输出到outputfile。
6.文本过滤:
sed -n '1,5p' inputfile > outputfile
这个命令会从inputfile中提取第1行到第5行的内容,并将这些内容输出到outputfile。
7.日志文件处理:
sed -n '/error/p' inputfile > outputfile
这个命令会从inputfile中提取所有包含error的行,并将这些行输出到outputfile。
8.文本转换:
sed 's/\t/,/g' inputfile > outputfile
这个命令会将inputfile中的所有制表符(\t)替换为逗号(,),并将结果输出到outputfile。
9.文本排序:
sed '1d; s/^/ /' inputfile | sort > outputfile
这个命令会删除inputfile的第一行,然后在每一行前添加空格,之后通过sort命令进行排序,并将结果输出到outputfile。
10.自动化脚本:
sed_script.sh
您可以创建一个shell脚本sed_script.sh,其中包含多个sed命令来自动化文本处理任务。
11.数据提取和报告生成:
sed -n '1,$p' inputfile | awk '{print $1}' > reportfile
这个命令会提取inputfile中每一行的第一个字段,并将这些字段保存到reportfile中,作为报告的一部分。
12.文本加密和解密:
解释# 加密(简单的倒序)
sed '1,$!G;h;$!d;$!N;s/\n//g' inputfile > encryptedfile
# 解密
sed '1,$!G;s/$.*$$.*$/\2 \1/;s/ //g' encryptedfile > decryptedfile
这是一个简单的加密和解密示例,通过倒序文本来实现。
13.批量重命名文件:
sed 's/\.txt$/改名后.txt/' filelist.txt | xargs -I {} mv {} {}
这个命令会从一个包含文件名列表的filelist.txt文件中读取,将所有.txt结尾的文件重命名为改名后.txt。
工作场景
sed(stream editor)在实际工作中有许多应用,尤其在处理文本文件和自动化任务时非常有用。以下是一些实际工作中的应用示例:
1. 日志文件分析
在服务器日志文件中搜索特定的错误信息或过滤出特定用户的活动记录。例如,查找所有404错误:
sed -n '/404/' /var/log/apache2/access.log
2. 配置文件编辑
批量修改配置文件中的参数。例如,更新所有监听端口:
sed -i 's/listen 80/listen 8080/' /etc/httpd/conf/httpd.conf
3. 文本替换
在大型文本文件中替换字符串。例如,将所有的foo替换为bar:
sed 's/foo/bar/g' input.txt > output.txt
4. 数据清洗
删除或格式化数据,如去除文本文件中的空行或注释行:
sed '/^$/d' data.txt # 删除空行
sed '/^#/d' data.txt # 删除以#开头的注释行
5. 批量文件重命名
使用sed生成新的文件名列表,然后使用mv命令批量重命名文件:
sed 's/\.txt$/_renamed.txt/' files.txt | xargs -I {} mv {} {}
6. 文本流编辑
在管道操作中使用sed来处理流数据。例如,查找进程列表中CPU使用率超过50%的进程:
ps aux | sed -n '$p; /cpu/ p'
7. 自动生成报告
从日志或其他文本文件中提取信息,生成报告。例如,提取特定服务的访问日志:
sed -n '/myservice/' /var/log/messages > myservice.log
8. 临时更改配置
在不修改原始文件的情况下,临时更改配置文件的参数,例如,临时增加日志级别:
sed 's/LogLevelWarn/LogLevelInfo/' /etc/myapp/myapp.conf > temp.conf && source temp.conf
9. 密码隐藏
在脚本中隐藏敏感信息,如密码:
sed 's/password: .*/password: ***/' /etc/passwd
10. 条件执行命令
根据匹配到的文本执行特定的命令。例如,如果文件中包含某个关键词,则执行备份操作:
复制
sed -n '/critical issue/{=; /$/q;} p' /var/log/syslog | xargs -I {} tar -czf {}_backup.tar.gz /path/to/data相关文章:
linux三剑客之流编辑器sed
sed(stream editor)是Linux和Unix系统中一个非常强大的文本处理工具。它主要用于对文本数据进行过滤和转换。sed 可以在不打开文件的情况下,直接对输入流进行操作,并且可以将结果输出到标准输出或文件。 基本语法: s…...
【Android Studio】上位机-安卓系统手机-蓝牙调试助手
【Android Studio】上位机-安卓系统手机-蓝牙调试助手 文章目录 前言AS官网一、手机配置二、移植工程三、配置四、BUG五、Java语言总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 AS官网 AS官网 一、手机配置 Android Studio 下真机调试 …...
怎样把学浪购买的课程下载下来
如何把学浪已购买的课程下载下来?这里就教大家一个方法,利用一个工具轻轻松松把视频下载下来 这个工具我打包成压缩包了,有需要的自己取一下 链接:https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码:kqvj --来自百度网盘超级会员V1…...
SD-WAN如何解决更有性价比地跨境网络问题
云桥通SD-WAN利用智能路由和负载均衡技术,优化数据传输路径,提高网络性能和可靠性。这意味着数据在跨国传输时可以更快到达目的地,减少延迟和丢包率。跨境SD-WAN提高了网络连接速度和质量,使用户能够更快地访问跨国业务所需的资源…...
第15章 File类与IO流
一 java.io.File类的使用 1.1 概述 File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新…...
C语言基础语法-教案16(从小白到劝退之结构体初阶)
最近给大家争取到一个 深夜福利 保证你在深夜手机刷到 嘎嘎香~ 那就是 大流量卡 缺点:月租太便宜 185GB~ 100分钟通话时长~ 长期套餐~ 畅想自由的气息 流量自由的同时还拥有超长通话,而且免费领取。 名额有限,咱们废话不多说直接上…...
Linux:ip和ip协议的初步认识
文章目录 ip协议基本认识ip协议的报头网段划分ip的类型划分 ip协议基本认识 前面对于TCP的内容已经基本结束了,那么这也就意味着在传输层也已经结束了,那么下一步要进入的是的是网络层,网络层中也有很多种协议,这里主要进行解析的…...
Android12 简单的共享内存驱动实现 参考Ashmem
Android12 共享内存驱动实现 SOC:RK3568 system:Android12 概述: 1. 概述 Ashmem(Anonymous Shared Memory,Android 匿名共享内存),它基于 mmap 系统调用,可以让不同进程将同一段…...
物理安全和逻辑安全在信息安全中的重要作用
在信息时代,信息安全已经成为企业和个人不可或缺的重要组成部分。物理安全和逻辑安全作为信息安全的两大支柱,发挥着至关重要的作用。 什么是物理安全和逻辑安全? 物理安全是指通过技术手段,对计算机设备、网络设备、数据中心等…...
每日一题 --- 滑动窗口最大值[力扣][Go]
滑动窗口最大值 题目:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1࿱…...
TensorBoard可视化+Confustion Matrix Drawing
for later~ 代码阅读 1. 加载trainset import argparse import logging import os import numpy as npimport torch from torch import distributed from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom backbones import get_…...
012——LED模块驱动开发(基于I.MX6uLL)
目录 一、 硬件原理图 二、 驱动程序 三、 应用程序 四、 Makefile 五、操作 一、 硬件原理图 又是非常经典的点灯环节 ,每次学新语言第一步都是hello world,拿到新板子或者学习新的操作系统,第一步就是点灯。 LED 的驱动方式࿰…...
基于springboot实现房屋租赁管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现房屋租赁系统演示 摘要 房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于Spring Boot的房屋租赁系统。 …...
168.乐理基础-中古调式概述
如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里,这里面有五线谱对应的音名,对比着看 如果不认识调号去看112.五线谱的调号(一)、113.五线谱的调号(二)、114.快…...
【项目实战】【Docker】【Git】【Linux】部署V2rayA项目
今天着手了一个全新领域的项目,从完全没有头绪到成功运行,记录一下具体的部署流程 github项目链接V2rayA 一开始拿到以后完全没有抓手,去阅读了一下他的帮助文档 写着能用docker运行,就去下载了一个Docker配置了一下 拉取代码到…...
mac 切换 jdk
查看 mac 上都有哪些版本 /usr/libexec/java_home -V看准版本切换 按前缀切换 比如 export JAVA_HOME/usr/libexec/java_home -v 1.8这样会随机一个 1.8 的 如果想再确定一个比如 openjdk export JAVA_HOME/usr/libexec/java_home -v 1.8.0_292这个方式是临时的,…...
MD5加密返回32位密文字符串
前言: 项目中需要调用其他系统的 api 接口,接口使用的是按一定规则生成 MD5 密文作为签名来进行身份验证,本文仅记录 32 位 MD5 密文的生成方式,仅供参考。 什么是MD5 加密? MD5 加密是一种加密算法,MD5…...
npm常用命令技巧
NPM (Node Package Manager) 是 JavaScript 的包管理工具,广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目,NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令,并提供相应的代码示例。 1. 初始化项目:npm …...
intellij idea 使用git撤销(取消)commit
git撤销(取消) 未 push的 commit Git,选择分支后,右键 Undo Commit ,会把这个 commit 撤销。 git撤销(取消) 已经 push 的 commit 备份分支内容: 选中分支, 新建 分支,避免后续因为操作不当,导…...
【计算机网络】四层负载均衡和七层负载均衡
前言 1、分层方式 首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。 在OSI中,各层的职责如下: 应用层:对软件提供接口以使程序能使用网络服…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
