【Linux】文本處理工具sed


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:在文件的指定位置插入另一個文件的所有內容,完成文件合併;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章