Sed编辑器

一、Sed编辑器介绍

Sed编辑器又被称为流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行输入,要么存储在一个命令文本中。

二、sed的工作流程

1、读取:sed 从输入流中读取一行内容并存储到临时缓冲区中。
2、执行:默认情况下,所有sed 命令都在模式空间中顺序的执行。
3、显示:发送修改后的内容到输出流

三、sed命令格式

1、sed -e ‘操作’ 文件1 文件2 …
2、sed -f 脚本文件 文件1 文件2 …
3、sed -n -e ‘操作’ 文件1 文件2 …
4、sed -i -e ‘操作’ 文件1 文件2 …

5、sed -e 'n{
操作1
操作2

}‘ 文件1 文件2 …
**

常用选项:

-e:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略。
-f:表示用指定的脚本文件来处理输入的文本文件。
-h:获取帮助
-n:禁止sed编辑器输出,可以与p一起完成输出。
-i:直接修改目标文本文件

常用操作:

s:替换
d:删除
a:增加,在当前行下面增加
i:插入,在选定行上面插入
c:替换
y:字符转换
p:打印
=:打印行号
l(小写):打印数据流中的文本和不可打印的ASCII字符。

在这里插入图片描述

[root@localhost /etc/test3#] sed -n 'p' demo1.txt 

在这里插入图片描述

[root@localhost /etc/test3#] sed -e  '='  demo1.txt

在这里插入图片描述

sed编辑器有两种寻址方式:

1、以数字形式表示行区间
2、用文本模式来过滤出行

[root@localhost /etc/test3#] sed -n '3p' demo1.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed -n -e '1,4p' demo1.txt 

在这里插入图片描述

[root@localhost /etc/test3#] sed -n -e '1,+4p' demo1.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed -n -e 'p;n' demo1.txt 

在这里插入图片描述

[root@localhost /etc/test3#] sed -n -e 'n;p' demo1.txt

在这里插入图片描述

[root@localhost /etc/test3#]sed -n -e '1n;5n;3n;p' demo1.txt 

在这里插入图片描述

[root@localhost /etc/test3#]sed -n '/user/p' /etc/passwd

在这里插入图片描述

[root@localhost /etc/test3#] sed -n '2,/nobody/p' /etc/passwd

在这里插入图片描述

[root@localhost /etc/test3#] sed -nr '/ro{1,}t/p' /etc/passwd

在这里插入图片描述

删除行
[root@localhost /etc/test3#] sed '3d' demo1.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed '/^$/d' demo1.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed  '/nologin$/d' /etc/passwd

在这里插入图片描述

[root@localhost /etc/test3#] sed '/1/,/3/d' demo2.txt 

在这里插入图片描述

替换

命令格式

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

共有4种替换标记:

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

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

在这里插入图片描述

[root@localhost /etc/test3#] sed -n 's/root/admin/gp' /etc/passwd

在这里插入图片描述

[root@localhost /etc/test3#]sed -n 's/root//gp' /etc/passwd

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

[root@localhost /etc/test3#] sed -f script.sed /etc/passwd

在这里插入图片描述
在这里插入图片描述

[root@localhost /etc/test3#] sed -n '1,10s/^/#/pw out.txt' /etc/passwd

在这里插入图片描述

sed -i ‘s9\945\9\99\98\939g’ test.txt
##这句话的意思就是将 94599替换成9893

s 后面跟的字符就是替换符,我们一般用的都是 / ,其实s 后面什么都可以跟,跟什么什么就是替换符,上面s 后面跟的是9,所有9 就成了替换符,后面如果使用到相同字符9的话,就需要 \ 来转义,否则系统会认为9 就是替换符,简单来说,你就可以把9 想象成 /。

插入
[root@localhost /etc/test3#] sed  '/3/c A' demo2.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed '/3/ y/3/A/' demo2.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed '3a 0000' demo2.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed '1,3i 0000' demo2.txt

在这里插入图片描述

[root@localhost /etc/test3#] sed  '/root/{H;d};$G' /etc/passwd

在这里插入图片描述

[root@localhost /etc/test3#] sed '1,2H;3,4G' demo2.txt

在这里插入图片描述

[root@localhost /etc/test3#] echo 111222333 | sed -r 's/(111)(222)/\2\1/'

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值