Shell指令碼學習之sed詳解

2021-07-10 23:18:59 字數 1003 閱讀 2769

linux(1)

目錄(?)

[+]

sed編輯器逐行處理檔案(或輸入),並將結果傳送到螢幕。具體過程如下:首先sed把當前正在處理的行儲存在乙個臨時快取區中(也稱為模式空間),然後處理臨時緩衝區中的行,完成後把該行傳送到螢幕上。sed每處理完一行就將其從臨時緩衝區刪除,然後將下一行讀入,進行處理和顯示。處理完輸入檔案的最後一行後,sed便結束執行。

前面說到sed不會修改檔案,那麼現在我們可以知道是為什麼了?是因為sed把每一行都存在臨時緩衝區中,對這個副本進行編輯,所以不會修改原檔案。

補充知識:

在使用sed的過程中,我們經常會聽到「定址」,那麼什麼是「定址」呢?

定址用於決定對哪些行進行編輯。位址的形式可以是數字、正規表示式、或二者的結合。如果沒有指定位址,sed將處理輸入檔案的所有行。

1、位址是乙個數字,則表示行號;是「$"符號,則表示最後一行。

例如:[plain]view plain

copy

sed -n '3p' datafile   #只列印第三行  

2、只顯示指定行範圍的檔案內容

例如:[plain]view plain

copy

sed -n '100,200p' mysql_slow_query.log  # 只檢視檔案的第100行到第200行  

3、位址是逗號分隔的,那麼需要處理的位址是這兩行之間的範圍(包括這兩行在內)。範圍可以用數字、正規表示式、或二者的組合表示。

例如:[plain]view plain

copy

sed '2,5d' datafile  

#刪除第二到第五行  

sed '/my/,/you/d' datafile  

#刪除包含"my"的行到包含"you"的行之間的行  

sed '/my/,10d' datafile  

#刪除包含"my"的行到第十行的內容  

shell指令碼學習sed

i 替換並儲存 s pattern replace string 只替換第一處 s pattern replace string g 替換所有 s pattern replace string ng 從第n處開始匹配 ex 直接替換文字 clz localhost shell learn sed i...

shell指令碼之sed開發

tmp file txt my qq num is 49000448.not4900000448.my god i am not oldbey,but clsn cheng my name is cheng.not oldman.my god i am not oldbey,but clsn i l...

Shell指令碼的學習 sed

sed是流編輯器,對文字進行批量化處理。sed option script file1 file2 sed option f scriptfile file1 file2 sed 處理的檔案既可以由標準輸入重定向得到,也可以當命令列引數傳入,命令列引數可以一次傳入多個檔案,sed會依次處理。sed的...