sed命令之練習集

       sed意爲流編輯器,在shell腳本和Makefile中作爲過濾器使用非常方便,也就是把前一個程序的輸出引入sed的輸入,經過一系列編輯命令轉換爲另一種格式輸出。它是一款輕量級流編輯器,它無需直接編輯資料,能夠將編輯工作自動化。

       sed的工作方式:由標準輸入讀取編輯文件,讀入一行或指定行放到模式空間,然後將所有編輯指令逐一對模式空間的內容進行編輯,之後將結果輸出到標準輸出,同時清除模式空間,就這樣重複之前的操作,直到最後一行,流編輯器停止,源文件不變(除非使用-i選項)。sed主要用來編輯一個或多個文件,簡化對文件的反覆操作。


我們用如下的圖來看看sed的工作流程:

wKiom1durRyy8L1aAAJR***CBdw379.png

               

       sed的工作流程:將要處理的行讀入模式空間,然後進行處理,處理完後該行被輸出,模式空間被清空。然後就重複剛纔的操作,讀入文件中的下一行,直到文件處理完畢。

       我們有一點要清楚,因爲文件內容在模式空間,並沒有改變,除非使用重定向存儲輸出,因而不會修改源文件。

       一般情況下,數據的處理只使用模式空間,按照上圖即可完成主要任務。但是我們要知道在某些時候,通過使用保持空間,還可以帶來意想不到的效果。

sed主要的命令:

       h:把模式空間的內容複製到當前保持緩衝區中,把原來暫存緩衝區的內容清除掉,添加新內容。

       H:把模式空間中的內容追加在保持緩衝區中原有內容的後面。

       g:把當前保持緩衝區中的內容複製到模式空間,替換掉模式空間中當前行的內容。

       G:把當前保持緩衝區中的內容追加到模式空間,追加在保持緩衝區中原有內容的後面。

       d:刪除模式空間的所有行,並讀入下一新行到模式空間中。

       D:刪除模式空間中的第一行,不讀入下一行。

       x:交換保持空間和模式空間的內容。

       n:讀取下一輸入行,用下一個命令處理新的行。

       N:追加下一輸入行到模式空間。


下面我們來做幾道練習練練手:

  1. 一個文件裏面有許多文本行,給每行結尾添加一空行:

       wKioL1dutpqDoGAgAABTuaYGVlM596.png


2.一個文件裏面有1-5個數字,每個數字分別在一行,將文件中的這幾個數字倒序輸出。

      wKiom1duvUuyDRNfAACflQZJCxs001.png


3.把一個文件裏面的某一個或幾個匹配的行追加到該文件結尾。

     wKiom1duwgmRAeAFAACzJKHtsb0652.png


4.把源文件的原來一列的數字改成只有一行。

     wKioL1duxbDg1MRyAABORnYP6oI953.png


5.求1-100的和。

     第一種方法:

    wKiom1duyNGSJWCrAABSGTpOPs4386.png

第二種方法:

   wKiom1duy-rwYLGvAABgnAryE14772.png


6.分別打印奇數偶數行。

    wKioL1duzp_Aeu1YAABB7gzEx20710.png


   以上就是自己在學習sed時所作的全部練習,但還遠遠不夠,還要多多練習的!



      

       









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章