shell指令碼學習-7(sed命令學習)

來源:互聯網
上載者:User

例五 給某些字串後面插入些內容

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing
London[rocrocket@rocrocket programming]$ sed ’s/B.*/&2008/’ mysed.txt
Beijing2008
London

這個命令的作用是將包含’B.*’的地方後面加上2008四個字元。這個命令裡用到了&字元,這是一個技巧,高手和菜鳥比,這些技巧很重要哦。&表示“被匹配的部分”,在這裡就是’Beijing’嘍!

例六 將行的第一個Beijing後加上2008,在最後一個Beijing後加上2008

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing Beijing Beijing Beijing
London London London London
[rocrocket@rocrocket programming]$ sed ’s//(Beijing/)/(.*/)/(Beijing/)//12008/2/32008/’ mysed.txt
Beijing2008 Beijing Beijing Beijing2008
London London London London

這個命令稍顯複雜,其中用到了一個技巧,就是預儲存,即被/(和/)括起來的匹配內容會被按順序儲存起來,儲存到/1、/2…裡面。這樣你就可以使用/加數字來調用這些內容了。這個例子就是使用了這個技巧,分別儲存了三個內容,分別為匹配Beijing、匹配.*和匹配Beijing。

你可能會問,我如果想在第一個t前加上M,在第二個t前加上N,怎麼做呢?

這個就需要使用Regex的非貪婪演算法了,一般是在?、+、*、{n}、{m,}、{m,n}的後面緊跟一個?,就會使匹配從貪婪演算法變成非貪婪算 法,但是遺憾的是,sed並不支援這種非貪婪演算法,所以我們無法使用sed實現這種想法,只能另尋其他工具了。這也算是sed的一個遺留問題吧。

例七 可以用模式來定位行範圍

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
Beijing 2007
[rocrocket@rocrocket programming]$ sed -n ‘/2005/,/2007/p’ mysed.txt
Beijing 2005
Beijing 2006
Beijing 2007

我們使用/2005/來匹配行範圍的首行,用/2008/來匹配行範圍的最尾行。可以看到,在匹配尾行時,只要遇到符合要求的行,即停止,不會再繼續向後匹配了。(只是匹配到第一個2007,並沒有匹配到第二個2007)

例八 用-e選項來設定多個command

還記得command部分吧,現在我告訴你,sed命令可以包含不只一個的command,但是當包含超過一個的command的時候,必須在每個command前面加上選項-e。

[rocrocket@rocrocket programming]$ sed -n -e ‘1,2p’ -e ‘4p’ mysed.txt
Beijing 2003
Beijing 2004
Beijing 2006
雖然這個例子看似是為了使用-e而使用-e,但是-e在有些時候是很有用的。相信我,呵呵:)

記住,-e後面必須立即接command,不允許再夾雜其他的選項了。

例九 可以使用-f來設定包含command的檔案名稱

如果你的command很長,那麼可以將其寫在檔案裡,然後使用-f來設定這個檔案作為command部分:

[rocrocket@rocrocket programming]$ cat callsed
/2004/,/2006/p
[rocrocket@rocrocket programming]$ sed -n -f callsed mysed.txt
Beijing 2004
Beijing 2005
Beijing 2006
兩個命令就講清楚了-f的用法。相信你能看懂。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.