sed 编辑器

sed是一种流编辑器,用于按行处理文件内容,常用于自动编辑、简化文件操作和编写转换程序。它的工作流程包括读取、执行和显示。grep和awk也是文本处理工具,grep擅长搜索,awk则适合数据分析和格式化输出。文章讨论了sed的常用选项和操作符,如替换、删除、插入等,并提供了实例说明。
摘要由CSDN通过智能技术生成

文本编辑三剑客: sed 、grep、awk都是针对文件内容的行来进行编辑处理

sed介绍

概述:类似于vim文本编辑器,但是是按行进行编辑处理,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。

接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
Sed作用:

用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序

sed的工作原理:

读取、执行、显示三个过程

读取: sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间)

执行: 默认情况下,模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。

显示:在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行, 直至所有内容被处理完。

执行完成后,把执行结果打印,如果要改变生效模式空间被修改的内容,会写入到指定的文件当中,只有操作但是不最终写入文件,只展示结果,展示完成后,模式空间的数据会被立即删除

面试题1、

sed文本内容处理空间,文件过大怎么办

1、split -l 按行切割

2、cat 文件名 | sed 处理  只能处理中型文件,大型文件需要先分割 

sed 实际操作

常用选项

-e : 条件操作选项,表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用

sed -e '操作'  文件1   文件2  
-f 指定脚本文件来进行处理输出的文件内容,把命令写在脚本里,用脚本里的命令处理第二个文件里的内容

格式:

sed -f   脚本文件   文件1  文件2

-i : 直接修改目标文本文件 慎用

-n :  仅显示script处理后的结果,禁止sed的默认输出,打印一份

sed操作符

(需要单引号引起来)

s:替换,替换指定字符

d:删除,删除选定的行

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

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

c:替换,将选定行替换为指定内容

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

p:打印,

sed核心: 就是增删改查,查的功能没有grep 强大

命令模式

查看

sed ' ' :打印功能(用单引号)

1、sed ‘ ’ /etc/passwd

2、cat /etc/passwd | sed ‘ ’

3、sed ‘ ’ < /etc/passwd

sed 有自己的一个默认输出,p 打印会额外再来一行

 sed  -“p” ky30.txt

sed -n '=' ky30.txt

sed -n '=;p' ky30.txt 即显示行号,也显示行对应的内容

sed 打印指定行,

1、寻址打印

sed -n '1p' ky30 打印第一行

sed -n '4p' ky30 打印第四行

sed -n '$p' ky30 打印最后一行

 2、行号范围区间打印

sed -n '1,3p' ky30  打印第一行到第三行

 打印第二行到最后一行,sed -n‘2,$p’ ky30

行号范围打印

“ , ” : 表示到,第一行到第四行

“ ;” : 表示和,第一行和第四行

奇数行和偶数行的打印

sed -n ''n;p" ky30   偶数行打印

“n”表示跳过第一行,打印一行,在跳过一行

sed -n ' p; n' ky30 奇数行打印

文本过滤模式

对包含指定字符串的内容进行打印

格式:sed -n '/ /'

sed -n '/o/p'ky30  打印包含“o”的行进行打印

 “o”  可以是单个字符,也可以是字符串

运用基础正则表达式进行打印

sed -n ' /^root/p'  /etc/passwd

sed -n ' /bash$/p'  /etc/passwd

删除

sed 'd' ky30

指定行进行删除

sed -n ' 3d;p' ky30 删除第三行,打印剩余的

sed -n ‘1d ;3d;p’ ky30  删除第一行和第三行打印剩余的

匹配字符串内容进行删除

sed  '/o/d' ky30

sed '/big/1d' ky30  除了big的那行其余全部删除

正则表达式的删除

删除空行: sed ' /^$/d' ky30

sed 替换

替换的操作符

s: 替换字符串

c: 整行替换

y: 单字符替换,

 字母字符的大小写替换

sed 's/[a-z]/\u&/g ' ky30 小写全部替换大写

sed 's/[A-Z]/\l&/g' ky30 大写全部替换成小写

l&: 转换成小写的特殊符号,在使用时需要转义符

u& : 转换成大写的特殊符号,在使用时需要转义符

g : 全部替换,如果不加只会更改首字母

整行替换

sed '/exy/ c boge is sexy ' ky30

将exy全部替换为boge is sexy (需要完全匹配)

单字符替换

sed 'y/any/123/' ky30 (必须前后长度一致)

选项 ;

a : 在下一行添加

i:在上一行添加

r:在行后读写文件内容

sed ‘/boge/ a123’ ky30   在boge 下一行添加

sed ‘/bighouse/r ky31 ’ ky30   在bighouse行后读取ky31的内容

第一个文件是要读取内容的文件,第二个是要制定操作的文件

sed命令当中字符串位置进行交换

echo ky30boge | sed -r's/(ky30) (boge)/\2\1/'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值