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的...