目录
1.功能介绍
Stream Editor##修改文本和替换,简称sed
sed
是 Linux/Unix 系统中一个非常强大的流式文本编辑工具,它用于对文本进行替换、删除、插入等操作。他有一下几种常用的功能:
替换:sed 可以用来替换文本中的特定字符串,语法为 s/old_string/new_string/g,其中 old_string 是要被替换的字符串,new_string 是替换后的字符串,g 表示全局替换。
删除行:可以使用 sed 删除文本中符合特定模式的行,语法为 /pattern/d,其中 pattern 是匹配模式。
插入和追加:sed 可以用来在指定位置插入新内容或者在行尾追加内容。
执行命令:sed 可以执行一系列编辑命令,比如替换、删除等,并且可以将编辑结果输出到标准输出或者保存到文件中。
多行操作:sed 可以处理多行文本,可以通过地址范围来指定需要操作的文本行。
2.使用说明(举例)
1.首先准备一个文本文件
我这里自己在 /test 下编辑了一个sed.txt的文本文件
[root@centos-router test]# vim sed.txt
[root@centos-router test]# cat sed.txt
繁花落尽,柳絮飘零,
春水泛起涟漪盈盈。
xiaomi redmi dami
baidu tencent jingdong alibaba
qq wexin
123456789
[root@centos-router test]# pwd
/test
2.编辑文本文件
1.替换功能
我这里将原来的含有redmi 的行全改成 lanmi ,标红突出一下
xiaomi lanmi dami
s是替换模式
g表示全局替换
/pattern/ 表示匹配模式
-i 是直接对源文件进行修改,如果你是对系统文件修改请慎重!!!
[root@centos-router test]# sed -i '/redmi/ s/redmi/lanmi/g' sed.txt
[root@centos-router test]# cat sed.txt
繁花落尽,柳絮飘零,
春水泛起涟漪盈盈。
xiaomi lanmi dami
baidu tencent jingdong alibaba
qq wexin
123456789
##用aaa替换所有含有i的行的i字符
[root@centos-router test]# sed -i '/i/ s/i/aaa/g' sed.txt
[root@centos-router test]# cat sed.txt
繁花落尽,柳絮飘零,
春水泛起涟漪盈盈。
xaaaaomaaa lanmaaa damaaa
baaaadu tencent jaaangdong alaaababa
123456789
##整行替换 匹配到/繁花/ 替换成 linux
[root@centos-router test]# sed -i '/繁花/c linux' sed.txt
[root@centos-router test]# cat sed.txt
luojin
linux
fanhua
春水泛起涟漪盈盈。
xaaaaomaaa lanmaaa damaaa
baaaadu tencent jaaangdong alaaababa
123456789
2.删除功能
删除了含有qq 的行
[root@centos-router test]# sed -i '/qq/ d' sed.txt
[root@centos-router test]# cat sed.txt
繁花落尽,柳絮飘零,
春水泛起涟漪盈盈。
xiaomi lanmi dami
baidu tencent jingdong alibaba
123456789
3.追加功能
##a用法 在匹配行后面插入
1a 表示第一行,在第一行后面插入
[root@centos-router test]# sed -i '1a fanhua' sed.txt
[root@centos-router test]# cat sed.txt
繁花落尽,柳絮飘零,
fanhua
春水泛起涟漪盈盈。
xaaaaomaaa lanmaaa damaaa
baaaadu tencent jaaangdong alaaababa
123456789
##i 用法 在匹配行前面插入
1i表示第一行。在第一行前面追加
[root@centos-router test]# sed -i '1i luojin' sed.txt
[root@centos-router test]# cat sed.txt
luojin
繁花落尽,柳絮飘零,
fanhua
春水泛起涟漪盈盈。
xaaaaomaaa lanmaaa damaaa
baaaadu tencent jaaangdong alaaababa
123456789
4.打印功能
-p
##打印模式空间的第一行到第三行的内容
[root@centos-router test]# sed -n '1,3p' sed.txt
luojin
linux
fanhua
[root@centos-router test]# cat sed.txt
luojin
linux
fanhua
春水泛起涟漪盈盈。
xaaaaomaaa lanmaaa damaaa
baaaadu tencent jaaangdong alaaababa
123456789
3.拓展总结
sed 的空间
模式空间 pattern space
临时仓库 hold space
##sed -r 支持sed的拓展正则
##还有其他的没补充好的请自行到man sed手册,这里只介绍sed 的一般常用的用法