sed命令用法大全

備註:此文並不容易產出,因為sed的用法看起來有點隨意,並沒有什麼規範可言,後期會繼續對sed命令進行解讀,敬請關注。linux和shell是一個江湖,歡迎關注《趣談shell》,體會這個江湖的混亂和無須,感受無奈和落寞。

1、sed簡介

sed是一種流式編輯器,它是文字處理中非常重要的工具。

sed編輯器被稱作流編輯器( stream editor ),和普通的互動式文字編輯器恰好相反。在互動式文字編輯器中,比如vim ,你需要用鍵盤命令來互動式地插入、刪除或替換資料中的文字。流編輯器則會在編輯器處理資料之前基於預先提供的一組規則來編輯資料流。

2、sed的工作機制

sed處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”( pattern space),接著sed命令處理緩衝區中的內容,處理完成之後,把緩衝區的內容送往螢幕顯示。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容沒有改變,除非使用了寫入的命令,將內容更新。

3、sed命令格式

sed [選項] 動作 檔案

4、sed的常用的選項

-n:使用靜默(silent)模式。在一般 sed 的用法中,所有來自stdin的資料一般都會被列出到終端上。但如果加上 -n 引數後,則只有經過sed特殊處理的那一行才會被列出來。

-i:直接修改讀取的檔案內容,而不是輸出到終端。

-r:表示使用擴充套件的正則表示式

5、sed動作說明

動作的格式為:地址定界+編輯命令,即 [n1[,n2]]cmd 的形式

(1)n1, n2:代表『地址定界』,下文會有介紹。

(2)cmd 為編輯命令,常見的命令有:

a :新增

c :取代

d :刪除

i :插入

p :列印

s :取代

6、sed地址定界

sed功能十分強大,其最大的特點是地址定界,透過設定地址用於決定對哪些行進行編輯。如果沒有指定地址,sed將處理輸入檔案的所有行。

sed地址的形式可以是數字、正則表示式或二者的結合。尤其是“數字+正則表示式”這種寫法功能強大,但是也是最難以掌握的:

(1)全文匹配:不需要給定地址

(2)單地址匹配:寫一個數字即可,例如:‘8’表示匹配第8行

(3)多地址匹配:給定一個範圍,例如:‘1,9’表示匹配第1行到第9行

(4)模式匹配:例如:‘/正則表示式/’表示正則表示式匹配到的行。再如,‘1,/正則表示式/’ 表示從第一行到正則表示式匹配到的行。

7、sed常見用法

s: 替換

sed -i ‘s/原字串/新字串/’ /home/1。txtsed -i ‘s/原字串/新字串/g’ /home/1。txt

d:刪除

cat system。log111222333#444# 刪除1行和2行[root@localhost ~]# sed ‘1,2d’ system。log 333#444 # 刪除system。log檔案中以#開頭的行[root@localhost ~]# sed ‘/^#/d’ system。log 333

p:列印

只打印第三行sed -n ‘3p’ system。log