Sed工具

Sed工具

概述

对文本进行操作:增、删、改、查

读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行

sed命令格式

e 指定要执行的命令,只有一个编辑命令时可省略,一般在执行多个命令的时候使用。
-n 只输出处理后的行,读入时不显示
-i 直接修改目标文本文件,不展示结果

操作符

s 替换
d 删除
a 增加,当前行下面增加一行指定内容
i 插入,当前行上面增加一行指定内容
c 替换
y 字符转换
p 打印
= 打印行号
l 打印数据流中的文本和不可打印的ASCII字符
r 高级正则表达式

使用测试

1.查找

1.-e 查找 (可执行多条命令)

会有冗余输出
sed -e ‘p’ test1.sh
-e
多条命令方法:
方式一:
sed -e ‘操作1’ -e “操作2” 文件
方式二:
sed -e ‘操作1:操作2’ 文件
方式三:
sed -e ‘n{
操作1
操作2
……
}’ 文件1

2.-n 禁止冗余输出

sed -n ‘p’ test1.sh
-n
打印行号
sed -n ‘=’ test1.sh
在这里插入图片描述

3.p 打印

打印行号 =
sed -n ‘=;p’ test1.sh
在这里插入图片描述
打印指定行
sed -n ‘1p’ test1.sh
在这里插入图片描述
打印最后一行
sed -n ‘$p’ test1.sh
在这里插入图片描述
打印1-3行
sed -n ‘1,3p’ test1.sh
在这里插入图片描述
打印6-最后一行
sed -n ‘6,$p’ test1.sh

在这里插入图片描述
打印5+2行
sed -n ‘5,+2p’ test1.sh
在这里插入图片描述
指定间隔行打印
打印第2行和最后一行
在这里插入图片描述
打印第1行和第三行
在这里插入图片描述
打印偶数行
sed -n ‘n;p’ test1.sh
在这里插入图片描述
打印单数行
sed -n ‘p;n’ test1.sh
在这里插入图片描述

4.过滤

打印包含e的行的内容
sed -n ‘/e/p’ test1.sh
e
以root开头的行
sed -n ‘/^root/p’ /etc/passwd
在这里插入图片描述
以bash结尾的行
sed -n ‘/bash$/p’ /etc/passwd
bash

2.删除

1.通过行号进行删除

删除第三行

在这里插入图片描述
删除第五行到第8行
sed -n ‘5,8d;p’ test1.sh
在这里插入图片描述
删除第五行到最后一行
sed -n ‘5,$d;p’ test1.sh
在这里插入图片描述
显示3-8行
sed ‘3,8!d’ test1.sh
在这里插入图片描述

2.匹配字符串删除

删除包含one的所有行
sed ‘/one/d’ test1.sh
在这里插入图片描述

删除字符串所在行到所在行之间的所有内容
sed ‘/one/,/six/d’ test1.sh
在这里插入图片描述

删除one six 以外的所有行
sed ‘/one/,/six/!d’ test1.sh
在这里插入图片描述

删除空行
sed ‘/^$/d’ test1.sh
在这里插入图片描述

3.替换

字符串替换

//代表保存的内容 s是字符替换
将第二个root替换成test 2p表示第二个
sed -n ‘s/root/test/2p’ /etc/passwd
在这里插入图片描述

将所有root替换成test gp匹配所有
sed -n ‘s/root/test/gp’ /etc/passwd
在这里插入图片描述

以root为开头的 把root前面的^替换成#
sed -n '/root/ s/^/#/p' test1.sh
在这里插入图片描述

替换大小写

\l&将匹配到的大写字母换成小写
sed ‘s/[A-Z]/\l&/g’ test1.sh
在这里插入图片描述
在这里插入图片描述

将小写字母换成大写
\u&将匹配的小写字母全部转换成大写
sed ‘s/[a-z]/\u&/g’ test1.sh
在这里插入图片描述

首字母大写 去掉g就行 /g的意思就是匹配全部 uU没有本质区别
sed ‘s/[a-z]/\U&/’ test1.sh
在这里插入图片描述

整行替换 /c

sed ‘/one/c ok’ test1.sh
/c

单字符串替换

y对单字符串进行替换,长度要相同,每个字符一一替换,不是整体替换
sed ‘y/one/123/’ test1.sh
在这里插入图片描述

4.插入

行后插入 /a

sed ‘/seven/a liwei’ test1.sh
在这里插入图片描述

行前插入 /i

sed ‘/seven/i qy’ test1.sh
在这里插入图片描述

行后插入文件

sed ‘$r 456.txt’ 123.txt
在这里插入图片描述

总结

1.sed命令是一种流编辑器,读取文件会进行逐行读取加上指令操作,所以过大的文件一定要拆分后再交给sed处理
2.sed -r搭配扩展正则表达式使用
3.用 -i时一定要先备份(尤其对重要文件的操作),或者先实验好确定无误时,再使用 -i
4.sed命令的重点在于增删改查四个功能,可以运用在脚本中对重要文件配置的修改,添加等作用尤其有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值