1:单个字符替换

(1)将文件中的某一字符替换成其它字符

sed 'y/要替换的字符/替换后的字符/' 文件名

我所用到的sed知识总结(一)_替换字符串

(2)替换以某一字符或字符串开头的行

sed '/^开头的字符串或字符/ y/要替换的字符/替换后的字符/' 文件名我所用到的sed知识总结(一)_替换字符串_02

(3)替换指定字符或字符串的单个字符

sed '/指定的字符串/ y/要替换的字符/替换后的字符/' 文件名

我所用到的sed知识总结(一)_sed_03

2替换多个字符串

(1)将文件中的指定的字符串全部进行替换

sed '/指定的字符串/ s/要替换的字符串/替换后的字符串/' 文件名

sed 's/要替换的字符串/替换后的字符串/g' 文件名    //这个没有限制,符合条件的就会替换

我所用到的sed知识总结(一)_替换字符串_04

(2)剩下的用法与1基本相同,只是参数不同而已

3.替换指定行的指定字符串

将第4行和第9行的zhang替换成wang

[root@server1 /]# sed -i "4,9s/zhang/wang/" a.txt

我所用到的sed知识总结(一)_替换字符串_05

4.在行首和行尾添加字符串

[root@wuxihl named]# sed "s/^/iloveyou/" tedu.zone
[root@wuxihl named]# sed "s/$/iloveyou/" tedu.zone

我所用到的sed知识总结(一)_sed_06

我所用到的sed知识总结(一)_替换字符串_07

5.在所有行的下一行添加字符串

[root@wuxihl named]# sed "a\iloveyou" tedu.zone

我所用到的sed知识总结(一)_sed_08

6.匹配本行后删除并加入新行

[root@wuxihl named]# sed "/doc/c\iloveou\nheiei" tedu.zone

我所用到的sed知识总结(一)_替换字符串_09

7.在某行的前一行或后一行添加内容

[root@chengduvip system]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost
[root@chengduvip system]# sed -i "/NETWORKING=yes/a\HOSTNAME=chengduvip" /etc/sysconfig/network
[root@chengduvip system]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=chengduvip
HOSTNAME=localhost
[root@chengduvip system]# sed -i "/NETWORKING=yes/i\HHHHHHHHHHHH" /etc/sysconfig/network                    
[root@chengduvip system]# cat /etc/sysconfig/network                                    
HHHHHHHHHHHH
NETWORKING=yes
HOSTNAME=chengduvip
HOSTNAME=localhost
[root@chengduvip system]# sed -i "/HOSTNAME/i\HHHHHHHHHHHH" /etc/sysconfig/network              
[root@chengduvip system]# cat /etc/sysconfig/network                              
HHHHHHHHHHHH
NETWORKING=yes
HHHHHHHHHHHH
HOSTNAME=chengduvip
HHHHHHHHHHHH
HOSTNAME=localhost

我所用到的sed知识总结(一)_sed_10

8.在具体行号后边添加一行

[root@chengduvip system]# sed -i "N;6i love you" /etc/sysconfig/network                           
[root@chengduvip system]# cat /etc/sysconfig/network                   
HHHHHHHHHHHH
NETWORKING=yes
HHHHHHHHHHHH
HOSTNAME=chengduvip
love you
HHHHHHHHHHHH
HOSTNAME=localhost
[root@chengduvip system]# sed -i "N;6a hate you" /etc/sysconfig/network      
[root@chengduvip system]# cat /etc/sysconfig/network                   
HHHHHHHHHHHH
NETWORKING=yes
HHHHHHHHHHHH
HOSTNAME=chengduvip
love you
HHHHHHHHHHHH
hate you
HOSTNAME=localhost

我所用到的sed知识总结(一)_sed_11

9. 删除指定行的上一行或下一行

删除指定文件的上一行

sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' server.xml

删除指定文件的下一行

sed -i '/pattern="%/{n;d}' server.xml