文本三剑客之——sed编辑器
sed编辑器
- sed编辑器
- sed基础语法
- sed查询
- sed删除
- sed 替换
- sed 插入
sed编辑器
- sed是文本处理工具,依赖于正则表达式,可以读取文本内容,工具指定条件对数据进行添加、删除、替换等操作,被广泛应用于shell脚本,以完成自动化处理任务。
- sed在处理数据时默认不直接修改原文件,而是把当前处理的行存储在临时缓存区中,所有指令都在缓冲区中操作,处理完成后,把缓冲区内容默认输出到屏幕,接着处理下一行内容,这样不断重复,直到文件末尾,文件本身内容没有改变
- sde是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
- 编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。
sed基础语法
-
命令语法:
- sed 选项 ‘编辑命令’ 文件1 文件2
-
常用选项
选项 | 作用 |
---|---|
-e | 指定要执行的命令,只有一个编辑命令时可省略。 |
-n | 只输出处理后的行,读入时不显示 |
-i | 直接编辑文件,而不输出结果 |
-f | 表示用指定的脚本文件来处理输入的文本文件 |
-h | 显示帮助 |
-
编辑指令格式:
- 【地址1】 【,地址2】 操作 【参数】
- 与grep一样,Sed在文件查找是也可以使用正则表达式和各种元字符。这里的“地址”就可以是正则表达式,也可以是数字、$,如果没有地址就代表是所有的行。
-
常用的“操作”及作用
指令 | 作用 |
---|---|
p | 输出指定的行 |
d | 删除指定的行 |
s | 字串替换,格式:‘行范围 s/旧字符串/新字符串/g’ |
r | 读取指定文件 |
w | 保存为文件 |
i | 插入,在当前行前面插入一行或多行 |
a | 插入,在当前行下面插入一行或多行 |
q | 表示退出 |
H | 复制 |
G | 粘贴 |
sed查询
-
sed -n ‘行号p’ :查看指定行信息
-
sed ‘5q’ :打印前5行信息后退出,q表示退出
-
sed -n ‘行1,行2p’ :查看从行1到行2的信息
-
sed -n ‘行1,+np’ :查看行1及行1后的n行信息
-
sed -n ‘3 {p;n;n;p}’ :n可以帮我们实现换行,p实现打印
-
sed -n ‘/字符串/ p’ :打印包含字符串的行
-
sed -n ‘/正则表达式/ p’ :打印所有包含正则能够匹配到的内容的行
使用演示:
sed -n ‘行号p’ :查看指定行信息
sed -n ‘行1,行2p’ :查看从行1到行2的信息
sed -n ‘行1,+np’ :查看行1及行1后的n行信息
sed -n ‘3 {p;n;n;p}’ :n可以帮我们实现换行,p实现打印
sed -n ‘/字符串/ p’ :打印包含字符串的行
sed -n ‘/正则表达式/ p’ :打印所有包含正则能够匹配到的内容的行
sed删除
sed ‘行号 d’ : 删除指定行号的行
sed ‘行1,行2 d’ : 删除行1与行2之间的行
sed ‘/字符串/ d’ :删除包含字符串的行
sed ‘/正则表达式/ d’ :删除所有包含正则能够匹配的到的内容的行
sed ‘行号,/字符串/ d’ :删除从指定行到第一个包含字符串的行
sed ‘/字符串1/,/字符串2/ d’ :从第一个字符串1的行开始删除到 第一个扫描到的字符串2的行,之后会继续扫描包含字符串1的行,然后继续执行删除和扫描字符串2的操作
使用演示:
sed ‘行号 d’ : 删除指定行号的行
sed ‘行1,行2 d’ : 删除行1与行2之间的行
sed ‘/字符串/ d’ :删除包含字符串的行
sed ‘/正则表达式/ d’ :删除所有包含正则能够匹配的到的内容的行
sed ‘行号,/字符串/ d’ :删除从指定行到第一个包含字符串的行
sed ‘/字符串1/,/字符串2/ d’ :从第一个字符串1的行开始删除到 第一个扫描到的字符串2的行,之后会继续扫描包含字符串1的行,然后继续执行删除和扫描字符串2的操作
sed 替换
- sed ‘s/旧字符/新字符/’ :替换每行匹配到的第一个旧字符
- sed ‘s/旧字符/新字符/n’ : 替换每行匹配到的第n个旧字符
- sed ‘s/旧字符/新字符/g’ :替换每行匹配到的所有旧字符
- sed ‘s/旧字符/新字符/w file’ :把替换后的行内容保存到指定文件
- sed -n ‘s/旧字符/新字符/gp’ > file
- sed ‘行号 s/旧字符/新字符/’ : 替换指定行的第一个匹配到的的字符串 最后加上g就是替- 换所有匹配到的旧字符
- sed ‘行1,行2 s/旧字符/新字符/g’ :替换行1与行2区间的匹配行的对应的字符串
- sed ‘/字符串/ s/旧字符/新字符/g’
- sed ‘/正则表达式/ s/旧字符/新字符/g’
- s/xx/xx/:后面的替换分隔符可以使用其他字符代替,需要确保三个分隔字符保持一致
- sed ‘行号c xxxx’ 替换指定行的整行内容
- sed ‘y/abc/123/’ 替换所有相对应的字符功能类似tr
使用演示:
== sed ‘s/旧字符/新字符/替换选项’ 替换选项可以指定第几个旧字符进行替换,g表示全行替换==
sed ‘s/旧字符/新字符/w file’ :把替换后的行内容保存到指定文件
== sed -n ‘s/旧字符/新字符/gp’ > file ==
sed ‘行号 s/旧字符/新字符/’ : 替换指定行的第一个匹配到的的字符串 最后加上g就是替- 换所有匹配到的旧字符
sed ‘行1,行2 s/旧字符/新字符/g’ :替换行1与行2区间的匹配行的对应的字符串
sed ‘/字符串/ s/旧字符/新字符/g’
sed ‘/正则表达式/ s/旧字符/新字符/g’
s/xx/xx/:后面的替换分隔符可以使用其他字符代替,需要确保三个分隔字符保持一致
sed ‘行号c xxxx’ 替换指定行的整行内容
sed ‘y/abc/123/’ 替换所有相对应的字符功能类似tr
sed 插入
-
sed ‘行号i xxxx’ :在指定行上面插入xxxx
-
sed ‘行号a xxxx’ :在指定行下面插入xxxx
-
sed ‘行号r file’ :在指定行下面读取文件内容
-
sed ‘/root/{H;d};$G’ /etc/passwd :将包含root的行剪切到末尾,H表示复制;G表示粘贴
-
sed ‘1,2H;3,4G’ /etc/passwd :将1到2行复制到3和4行下面
-
echo “111222333” | sed -r ‘s/(111)(222)/\2\1/’ :将字符111和222互换位置
使用演示:
sed ‘行号i xxxx’ :在指定行上面插入xxxx
sed ‘行号a xxxx’ :在指定行下面插入xxxx
sed ‘行号r file’ :在指定行下面读取文件内容
sed ‘/行数/{H;d};$G’ :将指定行剪切到末尾,H表示复制;G表示粘贴
sed ‘1,2H;3,4G’ :将1到2行复制到3和4行下面
echo “111222333” | sed -r ‘s/(111)(222)/\2\1/’ :将字符111和222互换位置
相关文章:

文本三剑客之——sed编辑器
sed编辑器 sed编辑器sed基础语法sed查询sed删除sed 替换sed 插入 sed编辑器 sed是文本处理工具,依赖于正则表达式,可以读取文本内容,工具指定条件对数据进行添加、删除、替换等操作,被广泛应用于shell脚本,以完成自动…...

华为OD机试真题 Java 实现【贪心的商人】【2023Q1 100分】
一、题目描述 商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index],每种商品的价格在每天是item_price[item_index][day],通过对商品的买进和卖出获取利润,请给出商人在days天内能获取到的最大利润。 注:同一件商品可以反复买进和卖出;…...
《数据结构与算法C++版》实验二-链表实验
一、实验内容 实验目的 1、实现线性表的链式存储结构(链表)。 2、熟悉 C++程序的基本结构,掌握程序中的头文件、实现文件和主文件之间的 相互关系及各自的作用。 3、熟悉链表的基本操作方式,掌握链表相关操作的具体实现。 实验内容 对链式存储结构的线性表进行一些基本操作…...
【2023华为OD笔试必会25题--C语言版】《06 简单的自动曝光》——数组
本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括原始题目 和 我亲自编写并在Visual Studio中运行成功的C语言代码。 仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨…...

Science Advances:宋艳课题组发现经颅近红外激光刺激可提升人类工作记忆
图1. 新闻稿封面 工作记忆——在几秒钟内主动“记住”有用信息的能力——在许多高级认知活动中起着至关重要的作用。由于工作记忆能力的个体差异可以预测流体智力和广泛的认知功能,这使得提高工作记忆能力成为干预和增强的有吸引力的目标。 美国食品及药品管理局声…...

Linux系统crash后定位方法-PCIE举例
crash解释 在Linux操作系统中,"crash"通常是指一种用于分析系统崩溃(crash)的工具或方法。当系统发生崩溃时,可能会产生一些关键信息,如错误日志、内存转储文件等。使用crash工具可以分析这些信息ÿ…...

瑞吉外卖 - 启用与禁用员工账号功能(8)
某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…...

【MySQL】索引
记录MySQL学习笔记,大部分图片来自黑马程序员MySQL教程。 文章目录 概述索引结构BTree为什么InnoDB使用BTree索引结构? 索引分类索引语法SQL性能分析1、查看执行频次2、慢查询日志3、profile详情4、explain执行计划 索引使用最左前缀法则索引失效情况1、…...

JavaScript全解析——express
express 的基本使用 ●express 是什么? ○是一个 node 的第三方开发框架 ■把启动服务器包括操作的一系列内容进行的完整的封装 ■在使用之前, 需要下载第三方 ■指令: npm install express 1.基本搭建 // 0. 下载: npm install express// 0. 导入 const express express()…...

【JavaScript数据结构与算法】字符串类(计算二进制子串)
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,也会涉及到服务端(Node.js) 📃个人状态: 在校大学生一枚,已拿多个前端 offer(…...

TCP连接不释放,应用产生大量CLOSE_WAIT状态TCP
一、起源 23年元旦期间,大家都沉浸在一片祥和的过节气氛当中。 “滴滴滴”,这头同事的电话响起,具体说些什么我也没太在意,但见同事接完电话之后展现出了一副懊恼夹杂着些许不耐烦的表情。 我不解问道:“怎么了&…...
Spring基础核心概念理解(常见面试题:什么是IoC?什么是DI?什么是Spring?)
目录 IoC 和 SpringIoC DI Spring IoC 和 SpringIoC IoC是控制反转的意思,它意味着控制权(依赖对象)的反转,将控制权进行反转,它是一种思想. 举个例子,理解一下什么是控制反转 现在有三个对象A,B,C. A的创建依赖于B,B的创建依赖于C,当我们想要创建A的时候创建B,同理也要…...
牛客小白月赛 D.遗迹探险 - DP
题目描述 小Z是一名探险家。有一天,小Z误入了一个魔法遗迹。以下是该遗迹的具体组成: 1. 在 x 轴和 y 轴构成的平面上,满足在 1≤x≤n,1≤y≤m 的区域中(坐标(x,y)表示平面上的第x行的第y列),每个整数坐标 (x,y) 都有…...

前端架构师-week6-require源码解析
require 源码解析——彻底搞懂 npm 模块加载原理 require 的使用场景 加载模块类型 加载内置模块:require(fs)加载 node_modules 模块:require(ejs)加载本地模块:require(./utils)支持文件类型 加载 .js 文件加载 .mjs 文件加载 .json 文件…...
作为 IT 行业的过来人,你有什么话想对后辈说的?
作为 IT 行业的过来人,我想对后辈们说,要不断学习和探索新技术,但同时也要注意保持专注和耐心。在这个快速变化的时代,技术更新换代太快,可能会让人感到焦虑和无助,但只要有耐心并专注于自己所做的事情&…...
表数据编辑(数据库)
目录 一、插入数据 1.插入单个元组: INSERT…VALUES语句 2.插入子查询的结果: INSERT…SELECT语句 3.使用SELECT…INTO语句进行数据插入 二、修改数据 1、数据修改语句:UPDATE 2、修改给定表的所有行 3、基于给定表修改某…...

考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

RocketMQ整理
RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。 使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过…...

Springboot +Flowable,会签、或签简单使用(二)
一.简介 **会签:**在一个流程中的某一个 Task 上,这个 Task 需要多个用户审批,当多个用户全部审批通过,或者多个用户中的某几个用户审批通过,就算通过。 例如:之前的请假流程,假设这个请假流程…...

将核心交换机配置为NTP服务器
AR配置外源NTP 1.配置ntp <XQ-R1220>sys [XQ-R1220]ntp-service unicast-server 120.25.115.20 #阿里云ntp [XQ-R1220]ntp-service unicast-server 203.107.6.88 #阿里云ntp 2.查看ntp状态 <XQ-R1220>display ntp status clock sta…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...