当前位置: 首页 > 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…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...