shell中的sed命令

shell中的sed命令

1.sed是什么

sed :stream editor 行编辑器
vim :交互式编辑器

sed是一种在线编辑器,它一次处理一行内容处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed编辑命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

sed的优点:sed速度快,在启动vim的时间,sed已经完成了需要执行的操作

2.标记替换

- 单句替换

s/要替换的部分/替换成的部分

echo "This is a test" | sed 's/test/testing/'

在这里插入图片描述

- 对于整个文件进行替换

sed 's/dog/tiger/' test1

在这里插入图片描述

- 指定行替换

sed '2s/dog/tiger/' test1			#指定替换第二行
sed '4s/dog/tiger/' test1			#指定替换第四行
sed '2,4s/dog/tiger/' test1			#指定替换第2到4行
sed '2,$s/dog/tiger/' test1			#指定替换第二行到最后
[root@node2 sed]# sed '2{			#多个要求替换第二行
> s/dog/tiger/
> s/white/red/
> s/cat/ribbit/
> }' test1

在这里插入图片描述

- 同时进行多个替换

写法1:

sed -e 's/dog/tiger/;s/cat/ribbit/' test1

在这里插入图片描述
写法2:

[root@node2 sed]# sed -e '
> s/white/red/
> s/dog/tiger/
> s/cat/ribbit/' test1

在这里插入图片描述

- 使用文件中指定命令替换另一文件

-f 命令文件 要替换的文件

sed -f file test1

在这里插入图片描述

- 当每句中含有多个要替换的关键字时

不加任何参数时默认替换每句中出现第一次的关键字:

sed 's/test/trial/' test2

在这里插入图片描述
加上g参数时替换所有出现的关键字:

sed 's/test/trial/g' test2

在这里插入图片描述
加具体的num参数,替换每句中出现第n次的关键字:

sed 's/test/trial/2' test2

在这里插入图片描述

3.参数p和-n:显示

p显示指定句,通常和-n搭配使用;-n:默认不显示所有内容

sed -n 's/test/trial/p' test3		#只显示修改部分
sed -n 's/number/num/' test4		#使用-n而不使用p参数时,不会有显示
sed -n '/number3/p' test4			#显示匹配到的含有number3的行
sed -n '2,4p' test4					#显示2到4行

在这里插入图片描述

4.参数w:写入文件

将指定部分写入文件

sed 's/test/trial/w test' test3	#将修改的句子写入test文件
sed '1,2w test' test4			#将1到2行写入test文件

在这里插入图片描述

5.要替换部分中含有/符号时的解决

- 方法1:用\转义符号进行转义

sed 's/\bin\/bash/\bin\/csh/' passwd

在这里插入图片描述

- 方法2:将修改格式中的/改为!

sed 's!bin/bash!bin/csh!' passwd

在这里插入图片描述

- 方法3:将修改格式中的/改为#

sed 's#bin/bash#bin/csh#' passwd

在这里插入图片描述

6.参数d:删除

sed 'd' test4				#删除全部
sed '2d' test4				#删除第二行
sed '4d' test4				#删除第四行
sed '2,4d' test4			#删除第2到4行
sed '2,$d' test4			#删除第二行到结束的行

在这里插入图片描述
应用正则表达式:

在这里插入图片描述

7.参数i和a:插入和追加

echo 'test 2' | sed 'i\test 1'	#i表示插入到前面
echo 'test 2' | sed 'a\test 1'	#a表示追加到末尾

在这里插入图片描述

sed '3i\test 1' test4			#插入到第三行前面
sed '3a\test 1' test4			#追加到第三行后面

在这里插入图片描述
插入多条:

[root@node2 sed]# sed '1i \
> new line1.\
> new line2.\
> new line3.' test4

在这里插入图片描述

追加多条:

sed '$a\This is an inserted line.\nThis is another inserted line.' test4

在这里插入图片描述

8.参数c:修改

在这里插入图片描述

- 修改指定行

sed '3c\new line3.' test4

在这里插入图片描述

- 修改含有指定信息的行

sed '/number1/c\new line.' test4

在这里插入图片描述

- 修改多行

sed '2,4c\new line.' test4

注意:此处的修改多行为同时修改,而不是逐行修改

在这里插入图片描述

- 修改指定单个字符

sed 'y/123/789/' test4

在这里插入图片描述
当一行中包含多个要修改的单个字符时,默认全部修改:

echo "This 1 is a test of 1 try." | sed 'y/123/789/'

在这里插入图片描述

9.显示行号:’=’

sed '=' test4

在这里插入图片描述

10.参数r:组合两个文件

在这里插入图片描述

- 添加到指定行后

sed '3r test5' test4			#将test5添加到test4中第三行后面

在这里插入图片描述

- 添加到包含指定信息行的后面

sed '/number2/r test5' test4

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值