歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

SED 手冊 - 1. Introduction

  1.IntrodUCtion Sed(Stream EDitor)為 UNIX 系統上提供將編輯工作自動化的編輯器 , 使用者無需直接編輯資料。使用者可 利用 sed 所提供 20 多種不同的函數參數 , 組合(解 [1])它們完成不同的編輯動作。此外 , 由於 sed 都 以行為單位編輯文件 , 故其亦是行編輯器(line editor)。 一般 sed 最常用在編輯那些需要不斷重覆某些編輯動作的文件上 , 例如將文件中的某個字串替換成另一個字 串等等。這些相較於一般 UNIX 編輯器(交談式的, 如 vi、emacs)用手動的方式修改文件 , sed 用起來較省力。 下面幾節將分別介紹: 何時使用 sed 何處獲得 sed sed 能做那些編輯動作 sed 如何工作 1.1 何時使用 sed 在修改文件時 , 如果不斷地重覆某些編輯動作 , 則可用 sed 自動一次執行這些編輯動作。例如要使 received 檔內 1000 封電子信件內的發信人屬名 "Tom" 改成 "John" , 此時只要在命令列上執行一簡單的 sed 命令就可 把檔內所有的 "Tom" 字串替換成 "John"。 再者 , 當文件需要許多不同編輯動作時 , 則 sed 一次可執行那些不同的編輯動作。例如 sed 能一次執行完將 文件中所有空白行刪除、替換字串、並將使用者輸入的文字添加在文件的第六行等等不同的編輯動作。 1.2 何處獲得 sed 一般的 UNIX 系統 , 本身即附有 sed。不同的 UNIX 系統所附的 sed 版本亦不盡相同。若讀者所使用的 UNIX 系統上未附有 sed , 則可透過 anonymous FTP 到下列地方去取得 : phi.sinica.edu.tw:/pub/GNU/gnu gete.sinica.edu.tw:/unix/gnu ftp.edu.tw:/UNIX/gnu ftp.csie.nctu.edu.tw:/pub/Unix/GNU ftp.fcu.edu.tw: /pub3/UNIX/gnu aXP350.ncu.edu.tw:/Packages/gnu leica.ccu.edu.tw :/pub2/gnu mail.ncku.edu.tw :/pub/unix/gnu bbs.ccit.edu.tw :/pub1/UNIX/gnu prep.ai.mit.edu.tw:/pub/gnu 1.3 sed 能做那些編輯動作 sed 可刪除(delete)、改變(change)、添加(append)、插入(insert)、合、交換文件中的資料行 , 或讀入其它 檔的資料到文件中 , 也可替換(substuite)它們其中的字串、或轉換(tranfer)其中的字母等等。例如將文件中的 連續空白行刪成一行、 "local" 字串替換成 "remote" 、"t" 字母轉換成 "T"、將第 10 行資料與第 11 資料合 等。 1.4 sed 如何工作 如同其它 UNIX 命令 , sed 由標准輸入讀入編輯文件並由標准輸出送出結果。下圖表示 sed 將資料行 "Unix" 替 換成 "UNIX" , 在圖中 , 上方 standard input 為標准輸入 , 是讀取資料之處 ; standard output 為標准輸出 , 是送出結果之處 ; 中間 sed 方塊的下面兩個虛線方塊表示 sed 的工作流程。其中 , 左邊虛線方塊表示 sed 將標准輸入資料置入 pattern space , 右邊虛線方塊表示 sed 將 pattern space 中編輯完畢後的資料送到標准輸出。 在虛線方塊中 , 兩個實線方塊分別表示 pattern space 與 sed script。其中 , pattern space 為一緩區 , 它是 sed 工作場所 ; 而 sed script 則表示一組執行的編輯指令。 在圖中, 左邊虛線方塊 "Unix" 由標准輸入置入 pattern space ; 接著 , 在右邊虛線方塊中 , sed 執行 sed script 中的編輯指令 s/Unix/UNIX/ (解 [2]) , 結果 "Unix" 被替換成 "UNIX" , 之後 , "UNIX" 由 pattern space 送到 標准輸出。 總合上述所言 , 當 sed 由標准輸入讀入一行資料並放入 pattern space 時 , sed 依照 sed script 的編輯指令逐 一對 pattern space 內的資料執行編輯 , 之後 , 再由 pattern space 內的結果送到標准輸出 , 接著再將下一行資 料讀入。如此重執行上述動作 , 直至讀完所有資料行為止。



>



Copyright © Linux教程網 All Rights Reserved