1 sed簡介
sed是一種在線編輯器、行編輯器,一次處理一行內容,在處理時,把當前處理的行爲存儲在臨時緩衝區中,該緩衝區爲模式空間(pattern space),接着用sed命令處理緩衝區中的內容,處理完畢後,把緩衝區的內容送到標準輸出,然後接着去處理下一行,重複完成的操作,直至文件末尾;sed處理的整個過程中,對象文件的內容並沒有改變,除非使用重定向來存儲處理後的結果。sed主要用來自動編輯一個或多個文件,簡化對文件的反覆操作過程。
sed和文本處理工具vim、grep是有區別的,vim是一種交互式的文本編輯工具,而sed是一種非交互式的文本編輯器(通過給定的條件自動逐行去處理文件);grep雖然也是一種流式的文本處理工具,但grep是用來檢索條件關鍵字的,而sed卻是搜索匹配處理文本工具。
sed所具有的功能有:數據的替換、刪除、新增等,這裏的數據可以是一些關鍵字,也可以是一些特定的行。
2 sed用法
sed的語法結構:
sed [OPTION] ... {script} [input-file] ... [actions]
[OPTION]
-r:支持擴展的正則表達式
-n:靜默模式
-e script1 -e script2 -e script3:指定多腳本運
-f /path/to/script_file:從指定的文件中讀取腳本並運行
-i:直接修改源文件
sed的地址定界(抽取的域)
#:#表示數字,指定行
$:最後一行
/regexp/:任何能夠被regexp所匹配到的行
\%regexp%:同上,只不過換作%爲regexp邊界符
startline,endline:
#./regexp/:從#開始,到第一次被/regexp/所匹配到的行結束,中間所有的行
#1,#2:從#1行到#2行
/regexp1/,/regexp2/:從第一次被/regexp1/匹配到的行開始,到第一次被/regexp2/匹配到的行結束,中間所有的行
#,+n:從#行開始,一直到向下的n行
first-step:指定起始行,以及步長
sed的編輯命令
d:刪除模式空間中的行;
=:爲模式空間中的行打印行號;
a \text:在行號後面追加文本,支持使用\n實現多行追加;
i \next:在行面前插入文本,支持使用\n實現多行插入;
c \next:用text替換匹配到的行;
p:打印模式空間中的行;
s/regexp/replacement/:替換由regexp所匹配到的內容爲replacement(支持使用其他分隔符如:s@@@。s###;條件是該分隔符在後面的模式中沒有出現過),對於替換還有兩個後選項g和i,分別表示如下:
g:全局替換;
- i:不區分大小寫
w /path/to/somefile:把指定的內容另存至/path/to/somefile路徑所指定的文件中;
r /path/from/somefile:在文件的指定位置插入另一個文件的所有內容,完成文件合併;