【Shell脚本】文本三剑客之sed编辑器

news2024/11/20 6:32:48

目录

一.sed编辑器的相关介绍及执行过程

1.sed介绍

2.sed编辑器的执行过程

二.sed命令格式

1.基本格式

2.在一个脚本文件里定义操作命令

3.常用操作

三.打印功能

1.默认打印方式

2.防止出现重复打印

2.1.

2.2.

2.3.

2.4.

3.使用地址打印

3.1.以数字形式打印行区间

单独某一行

区间行

当前行及后面连续行

奇数行跟偶数行

3.2.文本模式过滤行内容

对包含字符串进行过滤打印

用基础正则表达式打印

四.删除功能

1.全删

2.通过行号进行删除

补充

3.匹配字符串内容删除

4.正则表达式删除

五.替换功能

1.常规替换

2.替换标记

3.行号区间替换

4.打印及修改替换

5.字符串替换

6.正则表达式替换

7.整行替换

8.单字符替换

六.插入功能

1.在行下面插入

2.在行上面插入

七.复制粘贴功能

1.复制 粘贴

2.剪切 粘贴


一.sed编辑器的相关介绍及执行过程

1.sed介绍

  • sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流
  • sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中

2.sed编辑器的执行过程

  • 读取:目标文件的每行数据一次加入到缓冲区(模式空间)里,默认从第一行开始读取
  • 执行:使用定义的增删改查命令来处理读取到缓冲区行数据
  • 显示:将处理后的行数据输出到屏幕显示

二.sed命令格式

1.基本格式

sed -e '操作' 文件1 文件2 ...            在命令行指定操作命令处理文件行数据

sed -n -e '操作' 文件1 文件2 ...         在命令行指定操作命令处理文件行数据

2.在一个脚本文件里定义操作命令

sed -f 脚本文件  目标文件 ....            使用指定脚本文件里的操作命令处理文件行数据

sed -i                                   直接根据操作命令修改原文件行数据

3.常用操作

s替换,替换指定字符
d删除,删除选定的行
a增加,在当前行下方增加一行指定内容
i插入,在选定行上方插入一行指定内容
c替换,将选定行替换为指定内容
y字符转换,转换前后的字符长度必须相同
p打印行内容。如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用
=打印行号
l (小写L)打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

三.打印功能

1.默认打印方式

sed -e 'p' 文件

2.防止出现重复打印

2.1.

sed -n -e 'p' 文件

2.2.

显示行号

sed -n '=' 文件名

2.3.

显示特殊符号

sed -n 'l' 文件

2.4.

显示行号及行内容

sed '=' 文件名

sed -n -e '=' -e 'p' 文件名

3.使用地址打印

3.1.以数字形式打印行区间

单独某一行

区间行

当前行及后面连续行

奇数行跟偶数行
sed -n -e 'p' -e 'n'

sed -n -e 'n' -e 'p'

sed -n -e '2,${n;p}' test1.txt
  1. 第一次过程   读取 第二行    执行 先n 跳到下一行 (第三行)   再p 打印第三行内容 
  2. 第二次过程   读取 第四行    执行 先n 跳到下一行 (第五行)   再p 打印第五行内容 
  3. 第三次过程   读取 第六行    执行 先n 跳到下一行 (第七行)   再p 打印第七行内容 
  4. ......

3.2.文本模式过滤行内容

对包含字符串进行过滤打印
sed -n -e '/xx/p' 文件

用基础正则表达式打印

四.删除功能

1.全删

sed 'd' 文件

2.通过行号进行删除

sed -e '行号区间d' 文件

补充

sed '/^$/d' 文件		         删除空行

3.匹配字符串内容删除

sed -e '/字符串/d' 文件

4.正则表达式删除

sed -r -e '/正则表达式/d' 文件

五.替换功能

1.常规替换

行范围 s/旧字符串/新字符串/替换标记

2.替换标记

  • 数字:表明新字符串将替换第几处匹配的地方
  • g:表明新字符串将会替换所有匹配的地方
  • p:打印与替换命令匹配的行,与-n一起使用
  • w 文件:将替换的结果写到文件中
     

3.行号区间替换

sed -e '/字符串/ s/old/new/g'

4.打印及修改替换

sed -n -e '行号区间 s/old/new/gp'          打印被修改的行

sed -e '行号区间 s/old/new/gw 保存文件'     保存被修改的行

5.字符串替换

sed -r -e '/正则表达式/ s/old/new/g'

6.正则表达式替换

sed -r -e 's/(xxx)(xxx)(xxx)/\3\2\1/'

7.整行替换

sed -e '行号c 新行内容'

8.单字符替换

sed -e 'y/旧字符/新字符/'              新字符和旧字符的长度要一致

六.插入功能

  • a(在指定行下面插入行内容)  
  • i(在指定行上面插入行内容)    
  • r(在指定行下面插入整个文件内容)

1.在行下面插入

sed -e '行号区间a 行内容'

sed -r -e '/字符串或正则/a 行内容'

2.在行上面插入

sed -e '行号区间i 行内容'

sed -r -e '/字符串或正则/i 行内容'

七.复制粘贴功能

  • H(复制指定行到剪切板)  

  • G(将剪切板内容粘贴到指定行下面)

1.复制 粘贴

sed -e 'X,YH;$G'               将X-Y行内容复制粘贴到最后一行下面

2.剪切 粘贴

sed -e 'X,Y{H;d};$G'          将X-Y行内容剪切粘贴到最后一行下面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1683145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网实战--平台篇之(八)分组后台管理

目录 一、分组数据库 二、请求分组列表 三、添加分组 四、重命名分组 五、删除分组 六、分组排序 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/ca…

给你一把接口响应断言神器,你要不要?

JSON Schema是用来标记和校验JSON数据,类似于XMLSchema,可用在自动化测试验证JSON数据。 官网:http://json-schema.org/ 最常用版本:draft 04。(目前各类编程语言对draft 04支持最广泛) 举个例子 假如你有一个接口…

【LeetCode】【3】无重复字符的最长子串(1113字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示Python实现滑动窗口 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度 样…

element DatePicker 日期选择器设置禁用未来日期,时间范围为60天

需要用到 DatePicker 里面的 picker-options 方法 disabledDate onPick方法 <el-date-pickerv-model"form.xxxx"type"daterange"value-format"yyyy-MM-dd":clearable"false":picker-options"pickerOptions"start-placeho…

「React」2024最新版本入门 React 19 你需要掌握什么

前言 React 是前端很火且被广泛使用的一个框架&#xff0c;在当下这个时间想入门上手React开发&#xff0c;我们需要了解它的哪些最为关键的特性&#xff0c;本文将一一列出。 介绍 类组件在官方文档中也已经被废弃&#xff0c;下面均为 React Hooks useStateuseEffectuse…

C - Sigma Problem(AtCoder Beginner Contest 353)

题目的链接: C - Sigma Problem (atcoder.jp) 题目&#xff1a; 样例&#xff1a; 题目大致含意: 给你n个数&#xff0c;让你对这n个数进行操作&#xff0c;比如当前是第i个&#xff0c;那么让a[i] 和 后面的每个数进行相加, 例如a[i] a[i 1] 注意的是a[i] a[i 1]的结果…

ASTGCN 论文学习上

这里写自定义目录标题 Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting1. 摘要1.1 背景1.2 现有方法的不足1.3 提出的方法1.3.1 方法细节 1.4 实验结果 2 引言2.1 研究背景2.2 问题描述2.3 数据基础2.4 现有方法及其局限性2.5 提…

Easy Notes 彩色记事本,备忘录,笔记本,尊享版 v1.2.42.0517

软件介绍 「Easy Notes」是一款为用户量身打造的简易记事本管理应用APP&#xff0c;其功能覆盖了笔记撰写、备忘录设置、彩色便签制作及加密文档存储等。该应用程序以简洁的界面和便捷的操作性为核心&#xff0c;为用户提供了一个多元化的记录体验。借助其彩色背景与分类清单的…

AI预测体彩排3采取878=23策略+杀断组+杀和尾+杀和值012缩水测试5月23日预测第8弹

最近几天单位事情比较多&#xff0c;回来会比较晚&#xff0c;等忙过这段时间后每天我会恢复到中午左右将预测结果发出来&#xff0c;望各位见谅~今天继续验证测试87823策略&#xff0c;继续完成一个周期&#xff08;十期&#xff09;的测试。下面直接发预测结果~ 首先…

网络模型-Qinq配置与应用

Qinq配置与应用 通过配置Qinq来实现利用公网提供的VLAN100使企业1互通&#xff0c;利用公网提供的VLAN200使企业2互通不同企业之间互相隔离。并通过在连接其它厂商设备的接口上配置修改0in0外层VLAN Tag的TPID值&#xff0c;来实现与其它厂商设备的互通。 一、创建VLAN #在Swi…

基于springboot+vue的学生考勤管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【Linux】Centos7安装RabbitMQ

【Linux】Centos7安装RabbitMQ 下载 从 rabbitmq 的 GitHub 仓库下载 https://github.com/rabbitmq/rabbitmq-server/releases rabbitmq 是 erlang 语言编写的&#xff0c;需要先安装 erlang https://github.com/rabbitmq/erlang-rpm/releases 安装 使用rz命令上传 erlang 和 …

卡尔曼滤波(2):卡尔曼滤波与递归计算

1. 卡尔曼解决什么问题 比较经典的说法是&#xff0c;卡尔曼滤波适用于任何带有不确定性的系统中。那么我们怎么来理解这种不确定性呢&#xff1f;具体来讲&#xff0c;包含以下几种情况。 当前系统不存在完美的数学表达模型&#xff0c;即不能够通过一些数学方式来表达这个系…

智狐AI论文写作平:提升学术生产力的智能工具,支持私有化部署

在学术研究领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的引入正逐渐改变传统的论文撰写流程。AI论文自动生成工具的出现&#xff0c;为研究人员提供了前所未有的便利与优势。以下是对AI论文自动生成工具带来的便利与优势的深度剖析和解读。 首先&#xff0c;AI论文…

c++设计模式-->访问者模式

#include <iostream> #include <string> #include <memory> using namespace std;class AbstractMember; // 前向声明// 行为基类 class AbstractAction { public:virtual void maleDoing(AbstractMember* member) 0;virtual void femaleDoing(AbstractMemb…

DFE_offset失调校准

1.校准原因 *制造工艺的限制&#xff1a;晶体管在制造过程中&#xff0c;由于工艺的限制&#xff0c;不可能做到完全对称&#xff0c;这导致了输入级晶体管的性能存在微小的差异。 *输入级偏置电流的不对称&#xff1a;输入级晶体管的偏置电流也会存在差异&#xff0c;这也会…

ASP+ACCESS基于B2C电子商务网站设计

摘 要 运用ASP技术结合了Access数据库原理&#xff0c;基于B/S模式我们开发了一个网上购物系统。在我们的系统中&#xff0c;顾客可以很方便的注册成为会员&#xff0c;对商品进行浏览检索&#xff0c;查看商品的详细资料&#xff0c;然后根据各人的喜好购买心仪的商品。系统…

kyuubi/spark3的catalog 多个数据源配置

在使用kyuubi 的时候&#xff0c;有多个集群&#xff0c;老集群上是hive2,新集群hive3 ,想通过一个网关访问多个集群&#xff0c;或者通过jdbc访问mysql&#xff0c;oracle的数据&#xff0c;这样不用来回数据导入导出。spark 支持跨库访问数据&#xff0c;在spark 中提供两种方…

DOS学习-目录与文件应用操作经典案例-xcopy

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 xcopy命令是DOS系统中一个强大的文件和目录复制工具&…

SQLServer2022新特性IS [NOT] DISTINCT FROM

SQLServer2022新特性IS [NOT] DISTINCT FROM 1、本文内容 语法参数备注示例 比较两个表达式的相等性&#xff0c;并保证一个 true 或 false 结果&#xff0c;即使一个或两个操作数均为 NULL。 IS [NOT] DISTINCT FROM 这一谓词用于 WHERE 子句和 HAVING 子句的搜索条件中&a…