sed:Stream Editor文本流編輯,sed是一個「非交互式的」面向字符流的編輯器。能同時處理多個文件多行的內容,能夠不對原文件改動,把整個文件輸入到屏幕,能夠把只匹配到模式的內容輸入到屏幕上。還能夠對原文件改動,可是不會再屏幕上返回結果。html
sed命令的選項(option):linux
-n :只打印模式匹配的行編輯器
-e :直接在命令行模式上進行sed動做編輯,此爲默認選項post
-f :將sed的動做寫在一個文件內,用–f filename 執行filename內的sed動做url
-r :支持擴展表達式spa
-i :直接修改文件內容.net
sed -i '/DEVICE/c\Ethernet' test
命令行
#匹配DEVICE的行,替換成Ethernet這行code
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(/,@,# 地址定界符)htm
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"
參考: