sed 案例

 

sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。

sed命令的选项(option):

-n :只打印模式匹配的行

-e :直接在命令行模式上进行sed动作编辑,此为默认选项

-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作

-r :支持扩展表达式

-i :直接修改文件内容

 

sed -i '/DEVICE/c\Ethernet' test

#匹配DEVICE的行,替换成Ethernet这行

c\ 把选定的行改为新的文本
[root@kbase ~]# cat test 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  
DEVICE="eth0"  
BOOTPROTO="static"
[root@kbase ~]# sed -i '/DEVICE/c\Ethernet' test 
[root@kbase ~]# cat test 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  
Ethernet
BOOTPROTO="static"

 

sed -i 's/static/dhcp/' test

static替换成dhcp(/,@,# 地址定界符)

s 替换指定字符
[root@kbase ~]# cat test 
BOOTPROTO="static"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes"

[root@kbase ~]# sed -i 's/static/dhcp/' test
[root@kbase ~]# cat test
BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes"


sed -i 's/BOOTPROTO/#BOOTPROTO/' test
匹配BOOTPROTO替换成#BOOTPROTO,在配置文件中一般用于注释某行
[root@kbase ~]# cat test 
BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes" 

[root@kbase ~]# sed -i 's/BOOTPROTO/#BOOTPROTO/' test 
[root@kbase ~]# cat test 
#BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes" 


sed -i 's/ONBOOT/#&/' test
& 已匹配字符串标记

匹配ONBOOT的行的前面添加#号,在配置文件中也表示注释某行
[root@kbase ~]# cat test 
#BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes" 

[root@kbase ~]# sed -i 's/ONBOOT/#&/' test 
[root@kbase ~]# cat test 
#BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
#ONBOOT="yes" 

 

sed -i '/ONBOOT/s/#//' test
匹配ONBOOT的行,把#替换成空,即去掉#号,也一般用作去掉#注释
[root@kbase ~]# cat test 
#BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
#ONBOOT="yes" 

[root@kbase ~]# sed -i '/ONBOOT/s/#//' test
[root@kbase ~]# cat test 
#BOOTPROTO="dhcp"  
HWADDR="00:0C:29:90:79:78"  
ONBOOT="yes" 

 

参考:

 sed命令详解

http://man.linuxde.net/sed

posted @ 2017-10-18 13:57  Peter_Owen  阅读(158)  评论(0编辑  收藏  举报