sed命令詳解

2021-09-21 04:10:05 字數 2157 閱讀 5825

sed是一種非互動式的文字編輯器。它能執行編輯任務,並且是非互動,非常適合用於指令碼中。

sed可以對檔案中的內容進行編輯,但是它不改變原檔案的內容,而是以行為單位,把正在編輯的行載入到記憶體的臨時緩衝區中,處理之後傳送到螢幕,然後刪除快取區中的內容,再載入下一行要處理的內容,直到處理完輸入檔案的最後一行才結束執行。而sed命令通過-i選項也可以直接更改原檔案的內容,非常有用。

與grep一樣,sed在檔案中查詢模式的時候也要使用正規表示式和元字元(參見我的部落格:grep命令詳解)。正規表示式是括在斜槓間的模式,用於查詢和替換等。

sed命令的使用格式為:sed [options] "addresscommand" filename...

address指sed的定址,用於決定對那些行進行編輯。位址的形式可以是數字,正規表示式或二者的結合。如果沒有定址,預設sed將處理整個檔案中的所有行。如果位址是乙個數字,則代表行號。$用來指待輸入檔案的最後一行。如果給出的是逗號分隔的兩個行號,那麼處理的位址就是這兩行之間的氛圍(包括這兩行),後面加命令的話用「\」。如果是正規表示式的話,就是處理與模式匹配的字元行,後面加命令的話用"/"。

例:sed -n '1,2p' filename   顯示檔案的前兩行

sed -n '/ro.*/p' filename 顯示檔案由ro,後接任意字元的行 

sed -n '/ro.*/=' filename 獲取匹配行的行號

sed -n '/anaconda/,/notice/p' filename  列印匹配行之間的內容

sed -n '/anaconda/,10p' filename  列印匹配行到第10行的內容

sed  '/name/a\leeshengjia' filename  查詢到檔案的name字串,然後再此行下面新增「leeshengjia」這個字串

下面我們來說說sed的常用命令:

d  刪除行

例:sed '1d' filename 刪除第一行的內容

sed '/root/d' filename 刪除有root的行

p  顯示(匹配的行再顯示一遍)

例:sed '1,2p' filename 第一行和第二行會顯示兩遍

a\  在匹配的行的下面新增加一行內容

例:sed 『1a\lee jia』 filename 在第一行後新加一行lee jia

i\ 在匹配行的上一行新增加一行內容

s   s表示用乙個字串替換另乙個

用法為:s@@@flag

@只是乙個字元,可以隨意指定,但是必須是被替換和替換字串中沒有的。

flag有兩種:

g:全域性替換,即一行中只要匹配的全替換  

i:忽略大小寫,只匹配一行中的第乙個,剩下的不替換

例:sed 's@root@jia@g' filename 把檔案中所有行中的root替換成jia

sed 's@^root\(.*\)@jia\1@g' filename 把檔案中所有以root為行首的行中,把root替換成jia,其餘的不變

sed 's@root@jia@i' filename 把root或是root替換成jia

c\  替換,後面加字串,替換m,n行之間的內容

例:sed '/root/c\jia' filename 替換有root的行為jia

sed常用的選項有:

-n   只有經過sed處理的行才會被顯示處理(預設輸入檔案中的內容都顯示,處理的行會顯示兩遍)

例:sed -n '1,2p' filename 只顯示1,2行 

sed -n 's/lee/lee/p' test 只會顯示被匹配的行

-e   乙個sed命令可以跟多個出來條件

例:sed -e '1d' -e '2d' filename 

-i   直接修改原檔案

例:sed -i '1i\########' filename 在filename檔案的第一行插入#

sed '1 s/11/aa/g' filename 把filename檔案第一行的11全部替換成aa

-f   讀取sed指令碼,可以把處理條件寫入乙個檔案,然後用-f選項指定檔案讀取指令碼

例:指令碼檔案change中的內容為:s/lee/lee/

執行命令:

echo leeshengjia |sed -f change  顯示的是leeshengjia

-r   支援擴充套件型的正規表示式

sed命令詳解

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

sed命令詳解

sed 簡介 sed 意為流編輯器,源自英語 stream editor 的縮寫 是unix常見的命令列程式。sed 用來把文件或字串裡面的文字經過一系列編輯命令轉換為另一種格式輸出。sed 通常用來匹配乙個或多個正規表示式的文字進行處理。分號 可以用作分隔命令的指示符。常用的sed命令 模式 p ...

sed命令詳解

sed編輯器逐行處理輸入,然後把結果傳送到螢幕。i選項 直接作用原始檔,原始檔將被修改。sed命令和選項 a 在當前行後新增一行或多行 c 用新文字替換當前行中的文字 d刪除行 i 在當前行之前插入文字 h把模式空間的內容複製到暫存緩衝區 h把模式空間的內容新增到緩衝區 g取出暫存緩衝區的內容,將其...