1.簡介html
sed全稱是Stream Editor,是非交互式的編輯器。它不會修改原文件,除非使用shell重定向來保存結果, 或者能夠指定-i選項來在線修改文件,這樣就會改變原文件,升級腳本一般用-i選項。 默認狀況下,全部的輸出行都被打印到屏幕上 。sed 自己也是一個 管線命令 ,能夠分析 standard input 。mysql
sed編輯器 逐行處理文件(或輸入) ,並將結果發送到屏幕。具體過程以下:linux
(1) 首先sed把當前正在處理的行保存在一個臨時緩存區中(也稱爲模式空間), (2) 而後處理臨時緩衝區中的行, (3) 完成後把該行發送到屏幕上。正則表達式
sed每處理完一行就將其從臨時緩衝區刪除,而後將下一行讀入,進行處理和顯示。處理完輸入文件的最後一行後,sed便結束運行。sed把每一行都存在臨時緩衝區中,對這個副本進行編輯,因此不會修改原文件。sql
2. 定址shell
在使用sed的過程當中,咱們常常會聽到「定址」,那麼什麼是「定址」呢?緩存
定址用於決定對哪些行進行編輯 。地址的形式能夠是 數字、正則表達式、或兩者的結合 。若是沒有指定地址,sed將處理輸入文件的全部行。編輯器
好比:ide
1)地址是一個數字則表示行號;是「$"符號,則表示最後一行。spa
sed -n '3p' datafile #只打印第三行
2)只顯示指定行範圍的文件內容
sed -n '100,200p' mysql_slow_query.log # 只查看文件的第100行到第200行
3)地址是逗號分隔的,那麼須要處理的地址是這兩行之間的 範圍 (包括這兩行在內)。範圍能夠用數字、正則表達式、或兩者的組合表示。
sed '2,5d' datafile #刪除第二到第五行
sed '/My/,/You/d' datafile #刪除包含"My"的行到包含"You"的行之間的行
sed '/My/,10d' datafile #刪除包含"My"的行到第十行的內容
3. sed命令與選項
調用sed命令有兩種形式:
sed [options] 'command' file(s) sed [options] -f scriptfile file(s)
對於第一種形式,具體調用通常是:
sed [選項][定址[命令]] file(s)
命令和選項以下:
3.一、sed命令
3.二、sed選項
補充:
在sed的命令行中引用shell 變量 時要使用 雙引號 ,而不是一般所用的單引號。這根grep同樣,雙引號會獲取變量的值,而單引號只會把變量當作普通字面字符。
更多能夠參考:
《鳥哥的linux私房菜 基礎篇》第12章
本文來自:Linux教程網