首页 > 其他分享 >文本三剑客之sed

文本三剑客之sed

时间:2024-06-30 23:21:18浏览次数:1  
标签:打印 指定 编辑器 sed 内容 文本 替换 三剑客

文本三剑客之sed

一、sed编辑器的概述

1、sed编辑器的概念

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

2、sed编辑器的工作流程

sed 的工作流程主要包括读取、执行和显示三个过程∶

  • 读取∶ sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中 (又称模式空间)
  • 执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址, 否则sed 命令将会在所有的行上依次执行。
  • 显示∶发送修改后的内容到输出流。在发送数据后, 模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

在所有的文件内容都被处理完成之前,上述过程将重复执行, 直至所有内容被处理完。
注意∶ 默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

二、基本用法

1、语法:sed [命令选项] ‘匹配地址 脚本命令’ 文件名或标准输出或标准输入

选项 功能
-n 不自动打印
-e 多点编辑器
-f filename 从指定文件中读取编辑脚本
-r,-E 使用扩展正则表达式
-i.bak 备份文件并原处编辑
-i 直接修改目标文本文件

2、实例

2.1 sed -n

image-20240516141153114

2.2 sed -e和启用正则

image-20240516142329543

2.3 sed -i

image-20240517135134800

2.4 sed -i.bak

image-20240517135714603

2.5 打印文件内容的行号=

image-20240517140446695

三、 sed编辑器有2种寻址方式

1、以数字形式表示行区间:打印指定的行

image-20240517141814194

image-20240517143043976

2、用文本模式来过滤出行:

image-20240517152529690

3 步进:~

1~2:表示奇数行

2~2:表示偶数行

3~3:表示可以3的倍数行

image-20240517152949037

四、高级空间用法

sed -n 'n;p' 表示打印偶数行,表示从第一行开始,先放入高级空间,下一行打印,反复以往,表示打印偶数行

sed -n '2,${n;p}' 表示奇数行,表示从第二行开始,先放入高级空间,下一行打印,反复以往,表示打印奇数行

脚本命令,操作

p:打印,如果是同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用。

q:表示到第几行就退出,必须从第一行开始,3q就是1-3行

s:替换,替换指定字符

d:删除,删除选定的行

a:增加,在当前行下面增加一行指定内容

i:插入,在指定行上面插入一行指定内容

c:替换,将指定的行替换为指定内容(整行替换)

y:字符替换,转换前后的字符长度要一致

=:打印行号,这个是在前一行打印

r:表示读取文件内容,放入指定行后面

w:w file 保存模式匹配的行至指定文件

! :表示模式空间中匹配行取反处理

1、 p和q(打印和退出)

image-20240517162025829

4.2 a和i(插入下一行和插入下一行)

image-20240517162804762

image-20240517163219665

4.3 (c,y)行替换和字符替换

image-20240517163722924

image-20240517165336430

五、搜索替代

s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
2 表示行内的第2个匹配内容
p 显示替换成功的行
w   /PATH/FILE 将替换成功的行保存至文件中
I,i   忽略大小写
 
sed 's/root/&er/g' /etc/passwd
#&指代之前找到的内容
替换的内容应该是一个指定的存在的内容,不可以用正则表达式,这里可以用&这个符号指代前面匹配到的内容

image-20240517170445551

六、分组后项引用

两种方式:

  1. 先匹配关键字的前后部分有什么特点
  2. 找到关键字的特点,将整行用正则表达式采用分组表示

image-20240521091904787

标签:打印,指定,编辑器,sed,内容,文本,替换,三剑客
From: https://www.cnblogs.com/shijunan2/p/18277144

相关文章

  • 文本三剑客之grep和awk
    文本三剑客之grep和awk目录文本三剑客之grep和awk一、grep命令grep命令的语法:grep[选项]...查找条件目标文件命令作用-m数字多个匹配只取第一个-v取反-i忽略大小写-n显示匹配的行号-c统计匹配的行数-o仅显示匹配到的字符串-A数字匹配后几......
  • 开源语音转文本Speech-to-Text大模型实战之Wav2Vec篇
    前言近年来,语音转文本(Speech-to-Text,STT)技术取得了长足的进步,广泛应用于各种领域,如语音助手、自动字幕生成、智能客服等。本文将详细介绍如何利用开源语音转文本大模型进行实战,从模型选择、环境搭建、模型训练到实际应用,带您一步步实现语音转文本功能。一、模型选择目前,市......
  • 一加12搞机(kernelsu+lsposed)
    刷机温馨提示:如果你不知道root的意义在哪,建议不要解锁和root,到时候救砖或者回锁都挺麻烦。刷全量包最新版的系统没有更新推送,所以去一加社区[0]找了个全量包来刷,。安装方式可以看帖子里的内容,说的比较详细,这里截图一部分:解锁bootloader在系统与更新-》开发者选项里勾选OEM......
  • linux三剑客工具使用及硬盘知识介绍
    文本处理工具,文件查找工具,文本处理三剑客,文本格式化命令(printf)的相关命令及选项,示例。文本处理工具cat:连接文件并打印到标准输出。catfile1file2tac:反向连接文件并打印到标准输出。tacfilenl:给文件的每一行添加行号。nlfilemore:分页显示文件内容。morefilele......
  • java java.nio.channels.ClosedChannelException
    java.nio.channels.ClosedChannelException报错信息"java.nio.channels.ClosedChannelException"表示尝试在一个已经关闭的通道上进行操作。在JavaNIO中,通道(Channel)表示一个可以进行IO操作的对象,例如读取或写入数据。当你尝试在一个已经被关闭的通道上进行读取、写入或者其他......
  • 基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
    介绍ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTSwebUI&API为ChatTTS提供了网页界面和API服务。资源编排服务(ResourceOrchestrationService,ROS)是阿里云提......
  • 如何避免 `click` 和 `mousedown` 事件之间的冲突
    Genie你好!为了避免click和mousedown事件之间的冲突,可以通过检查拖拽的状态来决定是否应触发click事件。我们可以设置一个简单的延迟,并使用一个标志位来确定是否应该忽略click事件。下面是修改后的代码:<script>const{remote,ipcRenderer}=require('electron'......
  • Winform RichTextBox 获取Text文本中段落及区块
    在C#WinForms应用程序中,RichTextBox控件是一个功能强大的文本编辑控件,支持多种文本格式。如果你需要获取RichTextBox中每一部分的文本,包括段落和不同样式的区块,可以通过以下步骤实现。总体思路是使用RichTextBox的RichTextBox.Find以及RichTextBox.SelectionStart和RichTextBox.......
  • Cobra - Flags are parsed after rootCmd.Execute()
     root.go:funcinit(){rootCmd.PersistentFlags().BoolVarP(&enableLogging,"log","l",true,"Logginginformation")fmt.Println("*************************",enableLogging)}funcExecute(){err:......
  • Linux文本编辑器 - vim
    1.vim的基本概念Vim(ViImproved)是一款功能强大的文本编辑器,是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于xwindow、macos、windo......