sed原理及sed命令格式

2021-09-30 09:57:32 字數 1482 閱讀 4572

4.1            sed工作原理

sed是乙個非互動式的流編輯器。所謂非互動式,是指使用sed只能在命令列下輸入編輯命令來編輯文字,然後在螢幕上檢視輸出;而所謂流編輯器,是指sed每次只從檔案(或輸入)讀入一行,然後對該行進行指定的處理,並將結果輸出到螢幕(除非取消了螢幕輸出又沒有顯式地使用列印命令),接著讀入下一行。整個檔案像流水一樣被逐行處理然後逐行輸出。

下面我們看一下sed的工作過程。

sed不是在原輸入上直接進行處理的,而是先將讀入的行放到緩衝區中,對緩衝區裡的內容進行處理,處理完畢後也不會寫回原檔案(除非用shell的輸出重定向來儲存結果),而是直接輸出到螢幕上。sed執行過程中維護著兩個緩衝區,乙個是活動的「模式空間(pattern space)」,另乙個是起輔助作用的「暫存緩衝區(holding space)」。一般情況下,每當執行sed,sed首先把第一行裝入模式空間,進行處理後輸出到螢幕,然後將第二行裝入模式空間替換掉模式空間裡原來的內容,然後進行處理,以此類推。

一般情況下暫存緩衝區是用不到的,但有特殊的命令可以在模式空間與暫存緩衝區之間交換資料,後文將有介紹。由於sed對文字的所有操作都是在緩衝區裡進行的,所以不會對原檔案造成任何破壞。

4.2            sed命令格式

sed的命令格式如下:

sed [-options] [『commands』] filename

其中,command是乙個sed命令,sed命令一定要被包含在一對單引號中,以免被shell解釋,其格式如下:

[address-range][sed-command]或

[pattern-to-match][sed-command]

address-range是指要處理的行的範圍,又叫位址範圍;pattern-to-match是乙個要匹配的模式,是乙個正規表示式,sed-command是乙個sed命令,用來對指定的行進行處理。下面是乙個簡單的例子:

sed –n 『1,3p』 students

這個命令將檔案students中的第1到3行列印到螢幕。注意,位址範圍和sed命令之間沒有空格,如果加入空格,sed也會將其忽略。引數-n用來取消預設輸出。預設情況下,sed每讀入一行到模式空間,無論是否對其進行處理,在讀入下一行之前多要將模式空間中的內容輸出到螢幕上。引數-n可以用來取消這種預設的輸出,只有當使用者用命令p時才將指定的行輸出到螢幕。如果沒有用引數-n而又對指定行執行了p命令,那麼這些行將會被列印兩次。

位址範圍可以是乙個數字,這個數字代表了乙個行號;也可以是乙個用逗號分隔的兩個數字表示的範圍(包括這兩行)。範圍可以是數字,正規表示式,或是兩者的組合。

pattern-to-match是乙個要匹配的模式,sed將會對所有匹配的行執行sed-command。其實,這裡的pattern-to-match也可以看作是乙個位址,這個位址是所有與指定模式匹配的行的行號。因此sed的格式可以歸納為一種:

sed [-options] 『[address-range][sed-command]』 filename

文章出處:飛諾網(www.diybl.com):

sed相關命令及操作

sed i s g name.txt 替換每一行中的 為空格 sed i s mv g name.txt 在行首追加mv sed s tail g test.file 行尾追加 sed i 2s pei name.txt 替換一行 行首 行尾 sed裡面雙引號和單引號的區別,如果是單引號,不能引用變...

sed命令詳解

sed 是乙個精簡的 非互動式的編輯器。它能執行與編輯vi和emacs相同的編輯任務。sed編輯器不提供互動使用方式 只能在命令列輸入編輯命令 指定檔案 名,然後在螢幕上察看輸出。sed編輯器沒有破壞性。它不會修改檔案,除非用shell重定向來儲存輸出結果。預設情況下,所以的輸出都被列印到螢幕上。1...

Sed命令學習

該文章 jims of 肥肥世家 table of contents 1.sed簡介 2.定址 3.sed命令 4.選項 5.元字符集 6.例項 7.指令碼 8.小技巧 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1...