grep命令的查詢功能,sed命令的流編輯功能和awk(現已發展成為一門程式語言)作為更強大的文字編輯命令,在linux系統管理中,起著重要且全面的作用。而後來出現的perl程式語言(practicalextraction and report language),可以實現sed和awk的幾乎所有功能。但使用perl相對複雜和臃腫,因而sed和awk仍然活躍在
shell
程式設計的各個方面。
(1) sed是非互動式的編輯器,它按行處理物件檔案,但不修改處理檔案本身,而是逐行讀入檔案內容並在臨時快取區儲存副本並對其進行處理。處理完成每一行就將該行目標內容列印到螢幕,並將該快取區內容刪除,然後讀入下一行進行處理。另外需要注意的是,和grep不同,sed不論是否知道指定的模式,它的退出狀態都是0(linux中通常代表真)。只有存在語法錯誤時,sed的退出狀態才不是0。
sed命令的一般格式為
sed [option] 『』 datafile
或者sed [option] -f sed_script.sh data_file
如果沒有輸入檔案,則sed將從標準輸入中接收輸入流。
(2)常用的sed option
-n取消預設輸出。sed命令預設列印輸入檔案的所有行的同時,再次列印匹配行內容。加上-n命令後,則只列印匹配命令中指明的pattern的行。
-e指定多個編輯命令。sed預設之接受一組命令,如果要指定多個命令,則需要使用-e選項指明各個命令。例如
sed -n -e '1,800' -e '1,800' datafile
該命令使用-e指定兩個命令。前乙個列印匹配pattern的行,後乙個列印匹配pattern的行的行號。1, 800是定址條件,指明只查詢處理1到800行的資料。
(3)sed命令
命令p用於顯示sed處理的內容,常和-n選項一起使用,以取消預設列印操作,只列印選定內容。
命令d用於刪除匹配行。注意刪除的是緩衝區副本而非檔案本身。
sed 『$d』 datafilesed 『/pattern/d』 datafile
第一條命令刪除檔案的最後一行($匹配最後一行),列印檔案的所有其它內容。第二條命令刪除匹配pattern的行,並列印其它所有行。命令s用於替換指定內容。
sed 『s/pattern/newconent/g』 datafilesed –n 『1,20s/str$/newconent/gp』 datafile
第一條命令全域性替換(g)檔案中符合pattern的字串為newconent。第二條命令處理1到20行內匹配以str結尾的行($匹配行尾),並把str更換為newcontent後列印匹配行。
上述例示中都以 / 作為匹配串和新字串的分隔符,但實際上,可以指定其它分隔符(換行符、反斜槓除外)。指定其它分隔符時,可使用類似如下方式。
sed 『s#pattern#newcontent#g' datafile
上述命令指定#為分隔符。
命令 r 為讀命令,使用該命令將另乙個文字檔案的內容加到當前檔案的特定位置上讀出。
sed 『/pattern/r input.txt』 datafile
如果在檔案datafile的某一行匹配到pattern,就在該行後讀入檔案input.txt的內容。該過程為全域性型行為。
命令w為寫命令,將當前檔案的內容寫入到另乙個檔案中。
linux sed命令批量替換字串用法詳解
linux刪除檔案內空行四種方法
linux shell指令碼命令之sed教程
sed命令詳解
sed 是乙個精簡的 非互動式的編輯器。它能執行與編輯vi和emacs相同的編輯任務。sed編輯器不提供互動使用方式 只能在命令列輸入編輯命令 指定檔案 名,然後在螢幕上察看輸出。sed編輯器沒有破壞性。它不會修改檔案,除非用shell重定向來儲存輸出結果。預設情況下,所以的輸出都被列印到螢幕上。1...
sed命令詳解
sed 簡介 sed 意為流編輯器,源自英語 stream editor 的縮寫 是unix常見的命令列程式。sed 用來把文件或字串裡面的文字經過一系列編輯命令轉換為另一種格式輸出。sed 通常用來匹配乙個或多個正規表示式的文字進行處理。分號 可以用作分隔命令的指示符。常用的sed命令 模式 p ...
sed命令詳解
sed編輯器逐行處理輸入,然後把結果傳送到螢幕。i選項 直接作用原始檔,原始檔將被修改。sed命令和選項 a 在當前行後新增一行或多行 c 用新文字替換當前行中的文字 d刪除行 i 在當前行之前插入文字 h把模式空間的內容複製到暫存緩衝區 h把模式空間的內容新增到緩衝區 g取出暫存緩衝區的內容,將其...