当前位置: 首页 > news >正文

文本三剑客之——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工具可以分析这些信息&#xff…...

瑞吉外卖 - 启用与禁用员工账号功能(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&#xff0e;配置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&#xff0e;查看ntp状态 <XQ-R1220>display ntp status clock sta…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...