首页 > 其他分享 >sed----一款强大的文本流编辑器

sed----一款强大的文本流编辑器

时间:2024-06-02 12:31:16浏览次数:21  
标签:txt ---- 命令 编辑器 sed practise hello

文章目录


前言

Shell脚本,是我们在实现自动化的一个重要工具,在实现自动化的过程中不免会遇到对文本的增、删、查、改操作,如何高效的处理这些文件,是学习Shell脚本的一大重点。sed作为一款强大的文本文件流编辑器,是我们在处理文本文件时的得力助手,更是一个处理文本文件的强大生产力。


提示:为了照顾初次接触sed的朋友我们还是从最基础的概念开始

一、sed是什么?

1.基本概念

流编辑器(Stream Editor),简称 sed,是一种用于处理文本流的非交互式编辑工具。它在 Unix 和类 Unix 系统中非常常用。与传统的文本编辑器不同,sed 是设计用于自动化脚本批处理任务的命令行工具,它按行处理文件或输入流,并对每一行应用指定的编辑命令。

小结

  1. sed 是一个流编辑器,用于以非交互方式对文本进行处理。

  2. 它可以从文件、管道或标准输入读取文本,并进行编辑。

2.流编辑器的特点

  1. 非交互式:

    ‘sed’ 不需要用户交互,它在命令行中执行预先定义的命令和脚本来处理文本。

  2. 逐行处理:

    ‘sed’ 逐行读取输入(通常是文件或标准输入),对每一行应用编辑命令,然后输出结果。它不会一次性将整个文件加载到内存中,因此可以处理非常大的文件。

  3. 脚本驱动:

    ‘sed’ 使用简单但强大的脚本语言,这些脚本可以由单个命令或一系列命令组成。常见命令包括替换、删除、插入、追加等。

3.基本语法

sed [options] 'command' file

二、sed基本的命令和选项

1.基本命令

命令作用
s替换。例如,s/old/new/ 替换第一个匹配的 old 为 new
d删除。例如,2d 删除第二行
p打印。例如,/pattern/p 打印匹配 pattern 的行
i插入。例如,2i\This is an inserted line 在第二行前插入一行
a追加。例如,2a\This is an appended line 在第二行后追加一行

2.常用选项

选项作用
-n不自动打印模式空间
-i直接编辑文件(原地编辑)
-e允许多个编辑命令

三、实践使用与练习

提示:由于我想在文本中看到实际修改的效果所以统一用 "sed -i"

练习前可先创建一个practise.sh的脚本 在脚本中写如下命令,之后再创建一个practise.txt的文本文件观察效果

1.替换

#替换每行的第一个 'hello' 为 'hi'
sed -i 's/hello/ni hao/' practise.txt

#全局替换每行的 'hello' 为 'hi'
sed -i 's/hello/ni hao/g' practise.txt

#只替换文件中的某一行的 'hello'
sed -i '2s/hello/ni hao/' practise.txt

2.删除

#删除第二行
sed -i '2d' practise.txt

#删除匹配模式的行
sed -i '/hello world!/d' practise.txt

3.打印

#打印匹配到的行 -n 选项可抑制 sed 的默认输出 
sed -n '/hello world!/p' practise.txt 

#同样也可以用grep实现
grep 'ni hao world!' practise.txt

4.插入和追加

#在第二行前插入一行
sed -i '2i\This is an inserted line' practise.txt

#在第二行后追加一行
sed -i '2a\This is an appended line' practise.txt

5.使用正则匹配

#查找[hello]所在行,并在其后加入新的一行
sed -i "/^\[hello\]$/a ni hao world!" practise.txt

#查找[hello]所在行,并在其前加入新的一行
sed -i "/^\[hello\]$/i ni hao world!" practise.txt

总结

sed作为一款强大的文本文件流编辑器,是我们在实现自动化的过程中一个重要的工具,也是我们学习Shell的一项重要的技能,愿在今后和大家一起学习、一起进步,加油各位!

标签:txt,----,命令,编辑器,sed,practise,hello
From: https://blog.csdn.net/m0_60204812/article/details/139388657

相关文章

  • 【WEEK14】 【DAY5】Swagger第三部分【中文版】
    2024.5.31Friday接上文【WEEK14】【DAY4】Swagger第二部分【中文版】目录16.6.配置API分组16.6.1.修改SwaggerConfig.java16.6.2.重启16.7.实体配置16.7.1.新建pojo文件夹16.7.2.修改HelloController.java16.7.3.重启16.8.常用注解16.8.1.Swagger的所有注解定义在i......
  • STMF4立创天空星相关学习笔记 USART
    #本文有参考官方文档,连接就放在最后了,大家可以去看看,写的比较好,同时在此声明,本系列笔记是用来,记录学习过程中产生的问题,以及查询结果逐渐理解的过程。#USART    笔者理解:一种常用的通信方式,分为:同步通信、异步通信,两种二者差别在于,连接双方是不是有着相同的时钟频率,......
  • 立创天空星STMF4学习笔记,USART RS232 RS485相关理解
    为了写,这一篇文章笔者,参考了一些视频,文档,地址放最后,大家可以去看看。#USART为什么只能进行短距离通信,一般只在1M之内进行同行#USART单片机最为常用的一种通信方式之一,一般用于点对点通信,不能进行一主多从,进行相关通信,相关电平取值范围如下。        高电平......
  • Unity2D游戏制作入门 | 02
    上期链接:Unity2D游戏制作入门|01我们先整理我们的场景素材并调整一些参数,选中我们的Forest1,就是如下图所示了:选择:multiple(多个),16像素,不过滤,不压缩(compression),记得保存设置。开始编辑我们的场景:接下使用Size的模式进行切割:注意锚点我们设置在中心,不然等下放入图片......
  • Unity2D游戏制作入门 | 03
    ​上期链接:Unity2D游戏制作入门|02这节的规则瓦片其实是上一节用Tile去绘制地图的补充吧,假设你有大量而且面积还挺大的地图工程量,我想画的时间还是很久的,规则瓦片就是为了解决这种问题。所以所谓规则瓦片就是有一部分地方是固定绘制的,然后有一些地方是随机出现的素材(比......
  • Unity2D游戏制作入门 | 04
    上期连接:Unity2D游戏制作入门|03(主要介绍了快速绘图的瓦片调色盘功能)本节主要介绍物体的组件功能。如果我们点击我们的物体,然后你可以在最右侧的下部分看到英文:AddComponent,中其实是添加组件的意思。AI是这么回答组件的:组件(Components)是构建游戏对象(GameObjects)的核......
  • LNMP网站架构部署
     目录一、LNMP架构部署(源码编译安装)①实验准备②安装nginx服务③安装mysql服务,配置文件④安装php服务,修改配置文件⑤验证静态页面测试访问动态页面测试访问调用数据库测试二、LNMP架构应用实例1.论坛网站应用①nginx服务器上传压缩包并解压 ②php服务器上修改论......
  • 智慧校园的应用场景有哪些
    在21世纪的教育挑战中,如何利用科技手段优化教育资源分配,提升教学质量?智慧校园给出了答案。基于信息化的教育改革,智慧校园不仅提升了校园管理的效率,更通过一系列智能化应用,重塑了教学、学习和交流的方式。这些应用场景,如智能教室、数字化学习平台和高效能的校园服务,正在逐步渗透......
  • SQL注入攻击
    一.什么是SQL注入分类:可回显的注入和不可回显的注入以及二次注入;(1)可回显的注入:可以联合查询的注入,报错注入;(2)不可回显的注入:Bool盲注,时间盲注;(3)二次注入;二.可以联合查询的SQL注入1.SQL语句中的$id变量该变量会将GET获取到的参数直接拼接到SQL语句中,如:?id=1'unionselect......
  • 基于大数据的电影可视化、推荐与票房预测系统
    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在在的写点程序。......