Linux文本之sed流编辑器

这篇具有很好参考价值的文章主要介绍了Linux文本之sed流编辑器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、sed的相关知识及其工作流程

1)sed编辑器的介绍

2)sed 流编辑器的工作过程

3)怎么解决sed命令处理容量过大,或则内容过多的而导致执行效率慢的问题?

解决方案一(推荐用法):

解决方案二:

二、sed命令格式与选项操作符

1)sed命令格式

 基本操作格式: 

2)sed命令的常用选项

 3)sed命令的操作符 

三、 sed命令的打印功能

1)默认打印方式

无要求的默认打印

打印时对行号的操作

sed命令的寻址打印

①以数字形式打印行区间

​编辑

②文本模式过滤行内容

四、sed的删除操作 

 1)通过行号进行删除

 2)匹配字符串内容删除

 3)字符串搭配正则进行删除

 五、sed命令替换

1)字符串的替换 

匹配单字符进行替换

​编辑

2)进行字母字符进行大小的替换 

大写转换为小写 

小写转换为大写

3)知识扩充  “//”是可以被其他符号所替换的

经典分隔符转换案例

4)整行替换

使用c进行替换,是对整行内容进行替换

5)单字符的替换 

 六、sed命令的增加

1)sed 命令行插入 

2)sed命令行后读取文件插入

 七、sed 命令进行复制粘贴

八、sed命令中字符串和字符的位置交换


一、sed的相关知识及其工作流程

1)sed编辑器的介绍

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

2)sed 流编辑器的工作过程

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

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

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非使用"sed -i"修改源文件、或使用重定向输出到新的文件中 

3)怎么解决sed命令处理容量过大,或则内容过多的而导致执行效率慢的问题?

解决方案一(推荐用法):

使用split命令进行文件分割(例如文件如果是百万行,就创建一个单独的目录将文件分割为一百个为一万行的文本)再使用sed命令进行处理,除了split分割,也可以使用一个遍历分割shell脚本进行执行

解决方案二:

使用cat  文件名|sed  处理     (但是该方案只能针对中大型的文件文本,如果文本量过大,处理效果不好)

二、sed命令格式与选项操作符

1)sed命令格式

 基本操作格式: 

  • sed -e '操作'  文件1   文件2  
  • sed -n -e '操作'   文件1   文件2
  • sed -f   脚本文件   文件1  文件2
  • sed -i -e '操作'  文件1  文件2
  • 执行多条命令的格式:

    方式一: 

    sed -n -e '操作1' -e '操作2' 文件  ​

    方式二: 

     sed -n -e '操作1;操作2' 文件  ​  

    方式三:

    sed -e 'n{  
    
    操作1  
    
    操作2  
    
    ......  
    
    }' 文件1

2)sed命令的常用选项

选型 作用
-e 或--expression= 表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file= 表示用指定的脚本文件来处理输入的文本文件
-h 或--help 显示帮助
-n、--quiet或--silent 禁止sed编辑器输出,但可以与p命令一起使用完成输出
-i 直接修改目标文本文件

 3)sed命令的操作符 

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

三、 sed命令的打印功能

1)默认打印方式

无要求的默认打印

[root@localhost sed]#sed -e 'p'  english.txt 
 
 
[root@localhost sed]#sed -n 'p'  english.txt 

Linux文本之sed流编辑器

打印时对行号的操作

[root@localhost sed]#sed -n '=' english.txt 
 
 
[root@localhost sed]#sed -n '=;p' english.txt 

Linux文本之sed流编辑器

sed命令的寻址打印

①以数字形式打印行区间

方式一:按照行号寻求内容

[root@localhost sed]#sed -n '1p'  english.txt 
 
[root@localhost sed]#sed -n '4p'  english.txt 
 
[root@localhost sed]#sed -n '$p'  english.txt 

Linux文本之sed流编辑器

方式二:进行行号范围区间的打印

[root@localhost sed]#sed -n '1,3p' english.txt 
 
[root@localhost sed]#sed -n '5,$p' english.txt 
 
[root@localhost sed]#sed -n '5,+2p' english.txt 
 
[root@localhost sed]#sed -e '5q' english.txt 

Linux文本之sed流编辑器

 方式三:指定间隔打印

[root@localhost sed]#sed -n -e '5p' -e'$p'  english.txt 
 
 
[root@localhost sed]#sed -n -e '2p' -e'3p'  english.txt 

Linux文本之sed流编辑器

方式四:对奇数行和偶数行的打印 

[root@localhost sed]#sed -n 'n;p'  english.txt 
 
[root@localhost sed]#sed -n 'p;n'  english.txt 

Linux文本之sed流编辑器

②文本模式过滤行内容

方式一:对包含的字符串进行过滤打印

[root@localhost sed]#sed -n '/o/p' english.txt 
 
[root@localhost sed]#sed -n '/th/p' english.txt 

Linux文本之sed流编辑器

 方式二:应用基础正则表达式进行打印

[root@localhost sed]#sed -n  '/^root/p'   /etc/passwd
 
[root@localhost sed]#sed -n  '/bash$/p'   /etc/passwd
 
[root@localhost sed]#sed -n  '4,/bash$/p'   /etc/passwd

Linux文本之sed流编辑器

方式三:使用扩展正则表达式进行打印

注意: 

sed -r 支持扩展正则表达式。同时在 使用{n}、{n,}、{n,m}时,括号{}前不需要加反斜杠\ 

[root@localhost sed]#sed -r -n  '/(99:){2,}/p'   /etc/passwd
 
[root@localhost sed]#sed -r -n  '/^root|bash$/p'   /etc/passwd

Linux文本之sed流编辑器

四、sed的删除操作 

注意: 

以下的操作均为在默认情况下操作,有测试的效果,sed  -i   时会对文本进行实际操作(建议对目标文件先进行备份,再进行操作)

 1)通过行号进行删除

[root@localhost sed]#sed -n '3d;p' english.txt 
 
[root@localhost sed]#sed -n '5,8d;p' english.txt 
 
[root@localhost sed]#sed -n '5,$d;p' english.txt 

Linux文本之sed流编辑器

[root@localhost sed]#sed   '4,6!d'   english.txt 

Linux文本之sed流编辑器

 2)匹配字符串内容删除

[root@localhost sed]#sed   '/one/d'   english.txt 
 
[root@localhost sed]#sed   '/one/,/six/d'   english.txt 

Linux文本之sed流编辑器

[root@localhost sed]#sed   '/one/,/six/!d'   english.txt 
 
[root@localhost sed]#sed   '/six/!d'   english.txt 

 Linux文本之sed流编辑器

 3)字符串搭配正则进行删除

[root@localhost sed]#sed   '/^$/d'   english.txt 

Linux文本之sed流编辑器

删除空行的三种方法:

  1. grep -v "^$" file.txt //过滤出非空行
  2. cat file.txt |tr -s "\n" //压缩换行符
  3. sed '/^$/d' file.txt //删除空行

 五、sed命令替换

格式:

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


替换标记:

数字:表明新字符串将替换第几处匹配的地方  

g:表面新字符串将会替换所有匹配的地方

p:打印与替换命令匹配的行,与-n一起使用

w 文件:将替换的结果写入文件中 

 
sed命令的替换中:

s:替换字符串

c:整行替换

y:字符替换,替换前后的字符串长度必须相同

1)字符串的替换 

匹配单字符进行替换

[root@localhost sed]#sed -n 's/root/test/2p'  /etc/passwd
 
[root@localhost sed]#sed -n 's/root/test/gp'  /etc/passwd

Linux文本之sed流编辑器

[root@localhost sed]# sed -n '/^root/ s/^/#/p'   /etc/passwd

Linux文本之sed流编辑器

2)进行字母字符进行大小的替换 

大写转换为小写 

[root@localhost sed]#sed -i 's/[A-Z]/\l&/g'  english.txt 

Linux文本之sed流编辑器

小写转换为大写

[root@localhost sed]#sed -i 's/[a-z]/\u&/'  english.txt 
 
[root@localhost sed]#sed -i 's/[a-z]/\U&/'  english.txt 

Linux文本之sed流编辑器

[root@localhost sed]#sed -i 's/[a-z]/\U&/g'  english.txt 

Linux文本之sed流编辑器

3)知识扩充  “//”是可以被其他符号所替换的

经典分隔符转换案例

Linux文本之sed流编辑器

此时9代替/的作用,加上\才为数字9,否则为分隔符

4)整行替换

使用c进行替换,是对整行内容进行替换

[root@localhost sed]# sed '/ONE/c 22' english.txt 
 
[root@localhost sed]# sed '/TWO/c TEST' english.txt 
[root@localhost sed]# sed 'y/TH/12/' english.txt 

5)单字符的替换 

#使用y,是对单个字符进行替换,每个字符需要一一对应,不是整体替换。前后字符串长度需要一致,不然会报错

[root@localhost sed]# sed 'y/TH/12/' english.txt 

Linux文本之sed流编辑器

 六、sed命令的增加

a:在行后添加内容

i:在行前插入内容

r:在行后读入文件内容

1)sed 命令行插入 

[root@localhost sed]# sed '/THREE/a  123 ' english.txt 
 
[root@localhost sed]# sed '/THREE/i  123 ' english.txt 

Linux文本之sed流编辑器

2)sed命令行后读取文件插入

[root@localhost sed]#sed  '$r english2.txt'  english.txt

Linux文本之sed流编辑器

 七、sed 命令进行复制粘贴

#H复制、d删除、G粘贴到指定行下方

[root@localhost sed]#sed  '1,3 {H;G};$G' english.txt 
 
[root@localhost sed]#sed  '1,3 {H;d};$G' english.txt 

Linux文本之sed流编辑器

八、sed命令中字符串和字符的位置交换

[root@localhost sed]#echo 123abc|sed -r 's/(123)(abc)/\2\1/'

[root@localhost sed]#echo 123abc|sed -r 's/(.)(.)(.)(.)(.)(.)/\6\5\4\3\2\1/'

Linux文本之sed流编辑器文章来源地址https://www.toymoban.com/news/detail-441563.html

到了这里,关于Linux文本之sed流编辑器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sed编辑器

    目录 sed编辑器 命令格式: 常用选项: 常用操作: 打印内容: 使用地址: ​编辑 替换:  插入: sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,

    2024年02月05日
    浏览(67)
  • sed编辑器基础命令

    shell脚本编程系列 学习sed编辑器 sed编辑器被称作流编辑器(stream editor),与普通的交互式文本编辑器不同,在交互式文本编辑器可以用键盘命令交互式插入、删除或替换文本数据。流编辑器则是根据事先设计好的一组规则编辑数据流。 sed编辑器主要操作 从输入中读取一行数

    2024年02月01日
    浏览(26)
  • Linux文本编辑器-vim

    目录 前言 Vim三种模式 打开方式 命令模式 插入模式 可视模式 保存和退出 Vim是一个功能丰富且强大的文本编辑器,被广泛用于Linux系统。它是Vi的增强版本,提供了更多的功能和改进,同时可以通过插件扩展其功能; 「命令模式」:可以进行删除、复制、粘贴等快捷操作。

    2024年02月15日
    浏览(50)
  • Vue 富文本编辑器tinymce的安装教程(前端必备小知识)

    目录 一、Tinymce编辑器简介 二、安装以及配置tinymce         2.1.安装tinymce编辑器         2.2.从node_modules/tinymce复制样式到public目录下,复制完毕的public下的目录结构如下 三、在Vue里面使用         3.1.在components 目录下新建 Editor.vue 将下面代码复制进去        

    2024年02月11日
    浏览(41)
  • Linux 命令nano(文本编辑器)

    下面是一些Nano编辑器的详细命令和操作: 要启动Nano编辑器并打开一个文件进行编辑,可以使用以下命令: 如果指定的文件不存在,Nano会创建一个新文件并使用给定的文件名。 在Nano编辑器中保存文件非常简单。 如果在编辑过程中对文件进行了修改,Nano会提示您是否保存修改

    2024年04月11日
    浏览(33)
  • 《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月12日
    浏览(35)
  • Linux--了解Linux中的各种文本编辑器

    目录 一、文本编辑器 1、简介: 2、编辑器的功能: 3、适用于Linux的编辑器 3.1、vim编辑器的三种工作模式 3.2、vi编辑器中的相关指令 3.3、vi中的光标移动命令 3.4、vi高级读取和保存命令 3.5、vi插入和替换命令 3.6、vi编辑器中删除和修改命令: 3.7、vi编辑器中的复制命令 3.8、

    2024年02月08日
    浏览(37)
  • Shell脚本基础( 四: sed编辑器)

    目录 1 简介 1.1 sed编辑器的工作流程 2 sed 2.1 基本用法  2.2 sed基本格式 2.2.1 sed支持正则表达式 2.2.2 匹配正则表达式 2.2.3 奇数偶数表示 2.2.4 -d选项删除 2.2.5 -i修改文件内容 2.2.6  -a 追加 2.3 搜索替代 2.4 变量 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供

    2024年02月12日
    浏览(31)
  • Linux:Vim文本编辑器及其应用详解

    众多 Linux 发行版系统,通常都已经默认安装好了 vi 或 Vim 文本编辑器,Centos 也不例外,该系统就默认安装有 vi 文本编辑器,但建议大家使用 Vim。 如果在命令行模式下输入“vim”,输出结果为“Command not found”,则表示此系统中未安装 Vim。 CentOS 系统中,使用如下命令即可安

    2024年02月12日
    浏览(52)
  • Linux Vim文本编辑器-Vim常用命令

    距离上次Linux的学习,今天又是一个崭新的起点,我们用五天的时间学了一些Linux一些常用的操作命令,但掌握这些还是远远不够的,这个世界就是这样,将生于此,既是幸运也是不幸,只有不断地学习才能有自己的一席之地,话不多说,开始我们今天的Linux学习之旅。 目录

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包