sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern
space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有
改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。
sed -n:不輸出模式空間內容到屏幕,即不自動打印
sed-e: 多點編輯,對每行處理時,可以有多個Script
sed-f: 把Script寫到文件當中,在執行sed時-f 指定文件路徑,如果是多個Script,換行寫
sed -r: 支持擴展的正則表達式
sed -i: 直接將處理的結果寫入文件,源文件會被更改 建議在將處理的結果寫入文件之前備份一份
地址定界:
(1) 不給地址:對全文進行處理
sed -n ‘p’ 文件
(2) 單地址:
#: 指定的行
sed -n ‘2p’ 文件
/pattern/:被此處模式所能夠匹配到的每一行
sed -n ‘/^1/p’文件
(3) 地址范圍:
#,#
sed -n ‘1,3p’
#,+#
sed -n ‘2,+1p’
/pat1/,/pat2/
sed -n ‘/redhat/,/linux/p’
#,/pat1/
sed -n ‘2,/linux/p‘
同上
(4) ~:步進
sed -n ‘1~2p’ 只打印奇數行
sed -n ‘2~2p’ 只打印偶數行
編輯命令
d: 刪除模式空間匹配的行,并立即啟用下一輪循環
sed ‘2d’ 文件
p:打印當前模式空間內容,追加到默認輸出之后
sed ‘2p’ 文件
a [\]text:在指定行后面追加文本,支持使用\n實現多行追加
sed ‘2a\123\n456\n789’ 文件
i [\]text:在行前面插入文本
sed ‘2i\123\n456\n789’ 文件
c [\]text:替換行為單行或多行文本
sed ‘2c\123\n456\n789’ 文件
w /path/somefile: 保存模式匹配的行至指定文件
sed -n ‘3w /root/3.file’ 文件
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
sed ‘3r /root/mage.txt’ 文件
=: 為模式空間中的行打印行號
sed ‘=’ 文件
!:模式空間中匹配行取反處理
sed -n ‘2!p’ 文件
s///:查找替換,支持使用其它分隔符,s@@@,s###替換標記:
g: 行內全局替換
sed ‘s/dog/cat/g’ 文件
原創文章,作者:李先生,如若轉載,請注明出處:http://www.www58058.com/85389