功能說明:利用script來處理文本文件。
語法:sed [-hnV][-e<script>][-f<script文件>][文本文件]
補充說明:sed可依照script的指令,來處理、編輯文本文件。
參數:
-e<script>或--expression=<script> 以選項中指定的script來處理輸入的文本文件。
-f<script文件>或--file=<script文件> 以選項中指定的script文件來處理輸入的文本文件。
-h或--help 顯示幫助。
-n或--quiet或--silent 僅顯示script處理后的結果。
-V或--version 顯示版本信息。
sed工作原理:sed是一個非交互式的流編輯器。所謂非交互式,是指使用sed只能在命令行下輸入編輯命令來編輯文本,然后在屏幕上查看輸出;而所謂流編輯器,是指sed每次只從文件(或輸入)讀入一行,然后對該行進行指定的處理,并將結果輸出到屏幕(除非取消了屏幕輸出又沒有顯式地使用打印命令),接著讀入下一行。整個文件像流水一樣被逐行處理然后逐行輸出。
下面我們看一下sed的工作過程。 sed不是在原輸入上直接進行處理的,而是先將讀入的行放到緩沖區中,對緩沖區里的內容進行處理,處理完畢后也不會寫回原文件(除非用shell的輸出重定向來保存結果),而是直接輸出到屏幕上。sed運行過程中維護著兩個緩沖區,一個是活動的“模式空間(pattern space)”,另一個是起輔助作用的“暫存緩沖區(holding space)”。一般情況下,每當運行sed,sed首先把第一行裝入模式空間,進行處理后輸出到屏幕,然后將第二行裝入模式空間替換掉模式空間里原來的內容,然后進行處理,以此類推。一般情況下暫存緩沖區是用不到的,但有特殊的命令可以在模式空間與暫存緩沖區之間交換數據,后文將有介紹。由于sed對文本的所有操作都是在緩沖區里進行的,所以不會對原文件造成任何破壞。
sed命令格式
sed的命令格式如下:
sed [-Options] [‘Commands'] filename
其中,Command是一個sed命令,sed命令一定要被包含在一對單引號中,以免被shell解釋,其格式如下:
[address-range][sed-command]或
[Pattern-to-match][sed-command]
address-range是指要處理的行的范圍,又叫地址范圍;pattern-to-match是一個要匹配的模式,是一個正則表達式,sed-command是一個sed命令,用來對指定的行進行處理。下面是一個簡單的例子:
sed –n ‘1,3p' students
這個命令將文件students中的第1到3行打印到屏幕。注意,地址范圍和sed命令之間沒有空格,如果加入空格,sed也會將其忽略。參數-n用來取消默認輸出。默認情況下,sed每讀入一行到模式空間,無論是否對其進行處理,在讀入下一行之前多要將模式空間中的內容輸出到屏幕上。參數-n可以用來取消這種默認的輸出,只有當用戶用命令p時才將指定的行輸出到屏幕。如果沒有用參數-n而又對指定行執行了p命令,那么這些行將會被打印兩次。
新聞熱點
疑難解答