Shell程式設計基礎學習之六:sed 入門

趙明威發表於2014-09-21

sed 入門":總之,這個 sed 非常不錯啦!

而且很多的 shell script

都會使用到這個命令的功能~ sed 可以幫助系統管理員管理好日常的工作喔!要仔細的學習呢!

sed 是stream editor 流編輯器的縮寫: 替換第N處.用 Ng表示

[hadoop@hadoop scripts]$ echo this thisthisthis | sed 's/this/This/2g'  
this ThisThisThis
[hadoop@hadoop scripts]$ echo this thisthisthis | sed 's/this/This/3g'  
this thisThisThis
[hadoop@hadoop scripts]$ echo this thisthisthis | sed 's/this/This/4g'  
this thisthisThis

sed處理文字

**移除空白行 **

用sed移除空白行可以用正規表示式 ^$ 進行匹配

[hadoop@hadoop scripts]$ sed '/^$/d' sh*

在檔案的末尾插入新的一行

[hadoop@hadoop scripts]$ sed -i '$a echo Hello' sh06.sh 

除了整行的處理模式之外, sed 還可以用行為單位進行部分資料的

搜尋並取代的功能喔! 基本上 sed 的搜尋與取代的與 vi 相當的類似!

這樣:

sed 's/要被取代的字串/新的字串/g'

也可以利用正規表示式來進行寫:

[root@master Desktop]# sed -i -e '/.*apple.*/a\i will be back' a.txt 
[root@master Desktop]# more a.txt 
tea apple iphone mac bottle end efo
i will be back
i will success while i try my best !
best to success is read book and hand a skill
to be a master to be the first
i want you ,you will be my

[hadoop@hadoop ~]$ more a.txt 
i am a girl
you are a girl
he is a boy

修改內容

           [hadoop@hadoop ~]$ 
[hadoop@hadoop ~]$ sed -i 's/i am a girl/i am a boy/1g' a.txt 
[hadoop@hadoop ~]$ more a.txt 
i am a boy
you are a girl
he is a boy

替換第N處

[root@master Desktop]# sed -i 's/.*apple.*/begin to sleep/1g' a.txt 
[root@master Desktop]# more a.txt 
begin to sleep
i will be back
i will success while i try my best !
best to success is read book and hand a skill
to be a master to be the first
i want you ,you will be my

a 追加多行資料

 [root@hadoop conf]# sed -i -e '/<configuration>/a\<name><\/name>\n<property><\/property>' core-site.xml 
[root@hadoop conf]# more core-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?
>

<!-- Put site-specific property overrides in this file. --
>

<configuration>
<name></name>
<property></property>



</configuration>

最近申請了微信公眾號,希望大家來看看,專門為程式設計師而生,做最好的程式設計

高斯程式設計

相關文章