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:::lp:/var/spool/lpd:/sbin/nologin
DEVICE="eth0"
BOOTPROTO="static"
[root@kbase ~]# sed -i '/DEVICE/c\Ethernet' test
[root@kbase ~]# cat test
lp:x:::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

上一篇:Linux学习之CentOS(一)--CentOS6.6下Mysql数据库的安装与配置


下一篇:Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils