天天看點

sed簡單用法

    sed是善于處理行的,善于處理文本中的一行一行又一行!

    說一下簡單的sed的知識:

    sed的基本原理: 首先把文本中的内容,拿到記憶體中的模式空間去一行一行的做比較,比較完後,将模式空間裡剩下的内容做出顯示,輸出到螢幕上。

    是以,原理上,sed不會對文本内容本身做改變。

    幾個簡單指令:

    # sed '1,2d'  1.txt     //删除1.txt文本中的第1行到第2行。

    # sed '1,$d'  1.txt     //删除第1行到最後一行,$d代表最後一行,1和$之間有逗号。

    # sed '1,+2d' 1.txt     //删除第1行後,再删除2行。

    # sed '/^\//d' 1.txt    //删除首字母是“/”開頭的行!“^”這個符号,在鍵盤的阿拉伯數字6

                               的上面,代表以什麼什麼開頭。  “\”,這個我們叫做反斜線,這                               個可以去掉“/”的特殊含義,恢複它的字面含義。

====================================================================

    #sed '1p'  1.txt  //列印第1行

    #sed  -n '1p' 1.txt   //比較和 sed '1p' 1.txt有什麼不同,-n的意思是靜默模式,所謂靜默,

                            就是隻顯示出你想要的東西,其他的東西不會輸出,我想你會喜歡這個                               -n這個選項。

    #  sed '/^\//a hello world' 1.txt   // -a這個選項是追加,append,英語好的同學,直接man                                            sed就行

                                英語不太好的同學,就記住吧,或者百度,最好記在腦子裡。

                                    這句話的意思是,在首字母為“/”的後面追加hello world.

    # sed '/^\//a hello linux' 1.txt   //-i也是追加,在首字母是“/”的前面追加hello linux

=====================================================================

    #sed 's#root#ROOT#g' 1.txt   //作用是把root變成ROOT,而且是全局替換,g是global,全局的

                                    意思,s 是替換的意思。

    小注:   #sed 's#root#ROOT#g' 1.txt 等于  #sed 's/root/ROOT/g' 等于 #sed                                                's*root*ROOT*g'   ,隻要是3個相同的字母就可以。

======================================================================

後向引用,自己看看,自己敲敲,琢磨琢磨,不難:

     #sed 's#\(root\)#\1R#g' 1.txt    //這個“\1”的意思就是代表前面的root,在後面多一個R.

     #sed 's#\(root\)#&R#g' 1.txt      //這個&的作用也是代表前面的root.

     #sed -E 's#r(oot)#R\1#g'          //-E的作用是代表了“\”,有了-E,就不用反斜線“\”了

                                         自己動手敲,敲出來的感覺,不需要我多解釋。

=======================================================================

    #sed -e '1d' '2p'  1.txt   //-e 的作用是執行了1d,然後可以繼續執行2p. 一次性執行多個指令

    #sed -i '/\/root/a' 1.txt  //-i 不能亂用,慎用!!!這個-i直接給改變原來的檔案,你自己

                                    沒有掌握好的情況下,建議你慎用!

   sed 還有很多用法,你可以去百度,可以去man,自己查詢,我這裡隻說了一些常用、常見的用法,東西看上去好像不少,實際上東西不多,對于初學者,我建議,大量的練習,練習,練習,沒有好的方法,熟能生巧。想想上一年級的時候學習漢字,就是一個漢字寫10遍,甚至更多,所有對于sed而言,你可以試一試不斷練習的方法。方法僅供參考!  對于聰明同學而言,不多說!

本文轉自 曾國藩_6868 51CTO部落格,原文連結:http://blog.51cto.com/8184069/1708756

繼續閱讀