天天看點

sed N和$!N 的了解使用

   用圖示詳細說明。

   1.有123.txt檔案,内容如下:

   我的想法是把hello world 替換成 halo

   2.用N指令,測試替換,如下:

   N的作用是追加下一行到pattern space(我的了解是臨時存儲空間)。

         具體指令執行過程分析:首先讀入第一行 hello到pattern space,然後指令N,追加下一行 world! my name is 

am.到pattern space。注意:這個時候pattern space裡有兩行,就是:hello 和 world! my name is am.兩行。然後執行

s/\n//;這個指令是把兩行變成一行。然後再執行s/hello world/halo/。執行指令結束後,清空pattern space。讀取新的一行

進入pattern space,這裡是讀取第三行 hello.然後又開始以上的操作。直到讀完全不的資料。

         注意問題:123.txt裡的最後一行的hello world 沒有被替換掉。

   産生問題原因分析:123.txt總共9行,sed N指令毎執行一次處理兩行,第9行是單行,執行到

這一行,因為N指令,也需要追加一行,沒能執行成功N,是以替換失敗。

   3.$!N。用這個指令可以解決最後一行未能替換的問題。圖示如下:

   $!N指令解釋:最後一行不執行N指令。

   4.整個操作圖示:

本文轉自 am2012 51CTO部落格,原文連結:http://blog.51cto.com/goome/1749171