sed命令詳解

2021-10-12 05:09:10 字數 3569 閱讀 6488

sed的簡單格式舉例

流編輯器,用來過濾和轉換檔案中的內容的

sed一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」,接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕;接著處理下一行,這樣不斷重複,直到檔案末尾

sed [options] 『command』 filename(s)

sed的替換命令格式有三種:

s/a/b/g

s#a#b#g

s_a_b_g 引數

​        如果是軟連線,則會修改連線所指向的原始檔案

​        如果是硬連線,則會打破硬鏈結之間的關聯關係

動作c :取代, c 的後面可以接字串,這些字串可以取代 多行 之間的內容;

d :刪除,因為是刪除啊,所以 d 後面通常不接任何內容;

p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行;

s :取代,可以直接進行取代的工作。通常這個 s 的動作可以搭配正規表示法;例如 sed -i 『1,20 s/old/new/g』 filename 將第1行到20行的old替換為new 注意

sed 後面接的動作,最好以』'單引號括住。當然用""雙引號也可以。

如果使用單引號,那麼就沒辦法通過\』這樣來轉義,就有雙引號就可以了,在雙引號內可以用\」來轉義。

過濾行包含指定字串

sed -n '/string/p' filename
刪除包含指定字串的行
sed -n '/string/d' filename
p列印內容
例子:顯示檔案test中的第二行的內容

# sed -n '2p' test

例子:顯示檔案test中的第二~四行的內容

# sed -n '2,4p' test

例子:顯示檔案test中的第二~末行的內容

# sed -n '2,$p' test

d刪除內容
例子:顯示檔案test中的末行的內容

# sed -n '$p' test

例子:刪除第一行的內容

# sed '1d' test

例子:刪除檔案中的全部的內容

# sed '1,$d' test

例子:刪除前4行的內容

# sed '1,4d' test  //這裡僅僅刪除的是模式空間的內容,對原始檔案不會修改

c替換內容
例子:將第2行,替換成i am zxhk

# sed '2c i am zxhk' test

例子:將第2~4之間的內容替換為 i am zxhk

# sed '2,4c i am zxhk' test

顯示包含指定字串的行

匹配行號 'numaction'

匹配字元 '/string/action'

顯示包含字元 oo 的行

# sed -n '/oo/p' test

例子:顯示包含root字串的行

# sed -n '/root/p' test

例子:顯示包含root單詞的行

# sed -n '/\/p' test

例子:顯示以root字串為開頭的行

# sed -n '/^root/p' test

例子:顯示以root單詞為開頭的行

# sed -n '/^root\>/p' test

查詢替換

s/要匹配的內容/要替換成的內容/[g]

​    g:全域性替換。預設只會替換每行匹配到的第乙個物件

​    i:忽略大小寫

將root單詞替換成zxhk

# sed -i 's/\/zxhk/g' test //替換檔案

# sed -n 's/\/zxhk/p' test //列印

查詢字串後執行命令

:在這裡面寫要執行的命令,多個命令之間用分號分隔

例子:將shell型別為bash的行中的root替換為zxhk

# sed -n '/bash/' test

例子:將shell型別為bash的行中的root改為zxhk,0改為root

# sed -n '/bash/'

多點編輯

同時執行多個命令(操作)-e

例子:將檔案中的空白行和#開頭的行都刪除

# sed -e '/^#/d' -e '/^$/d' test

例子:將3到末行的內容全部刪除,而且將root替換為zxhk,將0替換為1

# sed -e '3,$d' -e 's/root/zxhk/g' -e 's/0/1/g' test

原地修改

-i選項

例子:將檔案中的空白行和#開頭的行都刪除

# sed -i -e '/^#/d' -e '/^$/d' test

取反操作

! 原基礎的不操作

例子:顯示以非 # 開頭的行

# sed -n '/^#/!p' test

例子:顯示非1-3行之間的內容

# sed -n '4,$p' test

or# sed -n '1,3!p' test

例子:在包含字串root的行下新增一行 i zm zxhk

# sed '/root/a i am zxhk' test

例子:在不包含字串root的行下各新增一行 i zm zxhk

# sed '/root/!a i am zxhk' test

從乙個檔案中讀取內容新增到另乙個檔案的指定位置

r

例子:從檔案info 中讀取內容寫入到test的第二行的後面

# sed '2r info' test

例子:從檔案info 中讀取內容寫入到test的第二~四行的後面

# sed '2,4r info' test

例子:從檔案info 中讀取內容寫入到test中包含字元root的行的後面

# sed '/root/r inof' test

例子:從檔案info 中讀取內容寫入到test中以#開頭的行的後面

# sed '/^#/r info' test

將匹配到的行寫入到乙個檔案中

w

例子:將包含字元root的行寫入到檔案a.txt

# sed '/root/w a.txt' test

引用前面搜尋匹配的結果
例子:將r和t之間有兩字元的單詞的後面新增上er

# sed 's/\/&er/g' test

or# sed -r 's/(\)/\1er/g' test

大神部落格鏈結

sed操作詳解

sed&awk奇偶行方法

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取出暫存緩衝區的內容,將其...