1:单个字符替换
(1)将文件中的某一字符替换成其它字符
sed 'y/要替换的字符/替换后的字符/' 文件名
(2)替换以某一字符或字符串开头的行
sed '/^开头的字符串或字符/ y/要替换的字符/替换后的字符/' 文件名
(3)替换指定字符或字符串的单个字符
sed '/指定的字符串/ y/要替换的字符/替换后的字符/' 文件名
2替换多个字符串
(1)将文件中的指定的字符串全部进行替换
sed '/指定的字符串/ s/要替换的字符串/替换后的字符串/' 文件名
sed 's/要替换的字符串/替换后的字符串/g' 文件名 //这个没有限制,符合条件的就会替换
(2)剩下的用法与1基本相同,只是参数不同而已
3.替换指定行的指定字符串
将第4行和第9行的zhang替换成wang
[root@server1 /]# sed -i "4,9s/zhang/wang/" a.txt
4.在行首和行尾添加字符串
[root@wuxihl named]# sed "s/^/iloveyou/" tedu.zone [root@wuxihl named]# sed "s/$/iloveyou/" tedu.zone
5.在所有行的下一行添加字符串
[root@wuxihl named]# sed "a\iloveyou" tedu.zone
6.匹配本行后删除并加入新行
[root@wuxihl named]# sed "/doc/c\iloveou\nheiei" tedu.zone
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
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
9. 删除指定行的上一行或下一行
删除指定文件的上一行
sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' server.xml
删除指定文件的下一行
sed -i '/pattern="%/{n;d}' server.xml