linux命令之sed命令詳解

2021-09-02 10:03:31 字數 3155 閱讀 7885

1. sed簡介

2. 定址

可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍(包括行數表示的那兩行)。如1,3表示1,2,3行,美元符號($)表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 。

3. sed命令與選項

呼叫sed命令有兩種形式:

sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)

a\         

在當前行後新增一行或多行

c\用新文字替換當前行中的文字

d刪除行

i\在當前行之前插入文字

h把模式空間的內容複製到暫存緩衝區

h把模式空間的內容新增到緩衝區

g取出暫存緩衝區的內容,將其複製到模式緩衝區

g取出暫存緩衝區的內容,將其追加到模式緩衝區

l列出非列印字元

p列印行

n讀入下一行輸入,並從下一條而不是第一條命令對其處理

q結束或退出sed

r從檔案中讀取輸入行

!對所選行以外的行應用所有命令

s用乙個字串替換另外乙個字串

替換標誌:

g       

在行內進行全域性替換

p列印行

w將行寫入檔案

x交換暫存緩衝區和模式空間的內容          

y將字元轉換成另外乙個字元

4.sed示例:

列印:p命令

sed 『/abc/p』 file

列印file中包含abc的行。預設情況sed把所有行都列印到螢幕,如果某行匹配到模式,則把該行另外再列印一遍

sed  -n 『/abc/p』 file

和上面一樣,只是去掉了sed的預設行為,只會列印匹配的行

刪除:d命令

sed 『3,$d』 file   

刪除從第3行到最後一行的內容。

sed 『$d』 file

刪除最後一行的內容

sed 『/abc/d』

刪除包含abc的行。

sed 『3d』 file

刪除第三行的內容

替換:s命令

sed  『s/abc/def/g』 file

把行內的所有abc替換成def,如果沒有g,則只替換行內的第乙個abc

sed  -n 『s/abc/def/p』 file

只列印發生替換的那些行

sed  『s/abc/&def/』 file

在所有的abc後面新增def(&表示匹配的內容)

sed  -n 『s/abc/def/gp』 file

把所有的abc替換成def,並列印發生替換的那些行

sed  『s#abc#def#g』 file

把所有的abc替換成def,跟在替換s後面的字元就是查詢串和 

替換串之間的分割字元,本例中試#

指定行的範圍:逗號

sed  -n 『/abc/,/def/p』 file

列印模式abc到def的行

sed  -n 『5/,/def/p』 file

列印從第五行到包含def行之間的行。

sed /abd/,/def/s/aaa/bbb/g

修改從模式abc到模式def之間的行,把aaa替換成def

多重編輯-e

sed  -e 『1,3d』 -e 『s/abc/def/g』 file

刪除1-3行,然後把其餘行的abc替換成def

讀檔案:r命令

sed  『/abc/r newfile』 file

在包含abc的行後讀入newfile的內容

寫檔案:w命令

sed  『/abc/w newfile』 file

在包含abc的行寫入newfile

追加:a命令

sed  『/abc/a\def』 file

在包含abc的行後新起一行,寫入def

插入:i命令

sed  『/abc/i\def』 file

在包含abc的行前新起一行,寫入def

修改:c命令

sed  『/abc/c\def』 file

在包含abc的行替換成def,舊文字被覆蓋

sed  『/abc/』 file

讀取包含abc的行的下一行,替換aaa為bbb

轉換:y命令

sed  『y/abc/abc』 file

將a替換成a,b替換成b,c替換成c(正規表示式元字元不起作用)

退出:q命令

sed  『/abc/』 file

在某行包含了abc,把aaa替換成bbb,然後退出sed。

暫存和取用:h命令(把模式行儲存到暫存緩衝區)和g(取出暫存緩衝區的行並覆蓋模式緩衝區)g(取出臨時緩衝區的行)命令

h和g是複製行為(覆蓋),h和g表示追加。

sed  -e 『/abc/h』  -e 『$g』 file                                      

包含abc的行通過h命令儲存到暫存緩衝區,在第二條命令匯中,sed讀到最後一行$時,g命令從暫存緩衝區中讀取一行,追加到模式緩衝區的後面。即所有包含abc的行的最後一行被複製到檔案末尾。

sed -e 『/abc/』

-e  『/def/』 file

包含abc的行會移到包含def的行上,並進行覆蓋。

暫存和互換:h和x命令

sed  -e 『/abc/h』  

-e 『/def/x』 file            

包含abc的行會被換成def的行。         

Linux之Sed命令詳解

3.sed命令 呼叫sed命令有兩種形式 sed options command file s sed options f scriptfile file s a 在當前行後面加入一行文字。b lable 分支到指令碼中帶有標記的地方,如果分支不存在則分支到指令碼的末尾。c 用新的文字改變本行的文字...

linux之sed命令詳解

sed是stream editor的簡稱,也就是流編輯器。它一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變...

linux之sed命令詳解

sed是乙個非互動式文字編輯器,它可以對文字檔案和標準輸入進行編輯,標準輸入可以來自鍵盤輸入,檔案重定向,字串,變數,或者是管道的文字。並將其複製到緩衝區,然後讀取命令列的命令,對此命令要求的行號進行編輯。用法 sed共有三種用法 直接在命令列中使用 sed 選項 sed命令 輸入檔案 將sed命令...