先來簡單介紹Sed由來
此工具是所有Unix系統都有的過濾工具,如其名sed
它能夠讀來自stdin(標準輸入)或檔案的文字串流,依據給他的指示及程式
來改變內容輸出到 Stdout(標準輸出)
主要的語法:
sed [options] 'Command' [files]
常用參數:
-e cmd 後面接命令(此參數可加可不加)
編輯命令:
常用的s(替換),d(刪除),g(全域替換),a(新增),c(取代)
下面我們用舉例方式才能深入你心ㄚ
s(替換):
以我們常用的ifconfig eth0來說,一般我們打此指令為了要看ip或maceth0
Link encap:Ethernet HWaddr 74:73:F1:52:8A:1A
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::250:fcff:fe22:9acb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
那麼我只要截取addr:192.168.1.11 的地方,該怎做呢?ifconfig eth0|grep 'inet '|sed 's/^.*addr://g'\
>sed 's/Bcast//g' 按enter
結果:192.168.1.11 成功輸出我們要的結果
上面最後一個\符號是讓您新增一個行程每增加一個行程都要在加上\這符號唷!
因為我一行打不下為了不破壞一整行的連貫性 就用這種方式來show
你可想成只是把|管線換成\來輸入 差別在於"一次打完與分次打" 懂了吧!
其實把每一個管線分開打,在結合在一起 就可以看出端倪了!grep 'inet '
這是因為我們只要inet這一行所以就先用grep來截取inet此行列sed 's/^.*addr://g'
上列為將行首到":"之間的字元取代,取代欄無任何字串所以是刪除的意思,
其語法是s/欲更改值/欲替換值/旗標
所以s/^.*addr: <- ^.* 的^是指行首開始 .* 就代表零個或多個任意字元
而後面的 //g <- /空/g 因為裡面的替換值是空的所以就等於刪除 g就是全域替換
所以如果命令只輸入到此 結果會是:ifconfig eth0|grep 'inet '|sed 's/^.*addr://g'\
結果:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
前面的inet addr:不見了但Bcast之後還在..
所以還需要在輸入以下行程:sed 's/Bcast.*$//g'
分解語法:從Bcast一直到最後面都取代成替換值 因為無替換值就全刪除
Bcast.*$ <-從b一直到行尾間的字串都會被取代的意思 懂了吧!ㄏㄏ
ps.上述都有用到正規表示法,所以建議要有一些概念會比較容易理解
待續...
傳承部落格 | 硬碟諮詢 | 重灌組裝 | 傳承即時留言版 | 線上MSN
傳承科技專門處理硬碟資料遺失,硬碟壞軌及異聲
各式隨身碟資料搶救,不過電及各種記憶卡如SD、MS、XD、CF
精通各種筆電改裝作業系統、MAC APPLE、LINUX、WINXP、VISTA
精緻服務盡在傳承 專業服務快速完工
1003 07/07 希捷Barracuda 7200.11全系列機瘟硬碟,傳承可處理
0925 突破!北京台商研發新隨身碟 插上電腦就可看臺灣頻道
0918 MSN霸道!強制更新9.0版本 剝奪舊版用戶登錄權
0907 告別硬碟 GDrive個資保密引疑慮
0906 為防止Downadup疫情擴大插入隨身碟請暫停使用「自動播放」功能
0903 兩倍牧場容量「2TB」硬碟一顆要8999元
傳承科技專門處理硬碟資料遺失,硬碟壞軌及異聲
各式隨身碟資料搶救,不過電及各種記憶卡如SD、MS、XD、CF
精通各種筆電改裝作業系統、MAC APPLE、LINUX、WINXP、VISTA
精緻服務盡在傳承 專業服務快速完工
1003 07/07 希捷Barracuda 7200.11全系列機瘟硬碟,傳承可處理
0925 突破!北京台商研發新隨身碟 插上電腦就可看臺灣頻道
0918 MSN霸道!強制更新9.0版本 剝奪舊版用戶登錄權
0907 告別硬碟 GDrive個資保密引疑慮
0906 為防止Downadup疫情擴大插入隨身碟請暫停使用「自動播放」功能
0903 兩倍牧場容量「2TB」硬碟一顆要8999元
首頁 -> [Linux]串流編輯工具Sed深入了解
2007年11月17日 星期六
[Linux]串流編輯工具Sed深入了解
作者是:
傳承科技
發表於:
凌晨1:58
標籤: Linux, Regular Expression
訂閱:
張貼留言 (Atom)












0 回應:
張貼留言