next up previous contents
Next: 符合條件的addressing Up: sed Previous: sed   Contents

簡介

sed是一種Stream EDitor,也就是餵給它一串資料流跟命令完成編輯的動作, 這很適合自動化的scripts作業
file -> stream -> sed -> stream -> file
由於它必須有個in, 處理完後有個out所以不能同時改個檔案, 必須先處理舊檔案後送出成新檔名,把舊檔殺掉,再把新檔改名成舊檔, 又因為他內定輸出是standard out所以常看到的方法是
	$ sed 'sed_syntax' old_file > new_file
	$ mv new_file old_file
不過sed通常是用來對字串的處理顯示,不是像一般editor來modify檔案的, 而且記住是一行一行處理的所以空白, tab, 換行這些字元很重要。

sed的一般式是
sed [address],[address][!]command[args] file
其中address,command,用單引號'xxx '包住。 address就是上面regular express的東西,常用的命令有d(delete), s///(代換) 一些簡單例子
	$ sed 's/yes/no/g' file                      把檔案中yes換成no
	$ sed '/save/!d' file                        把沒有save字眼的行幹掉
	$ sed -e 's/\(.*\)\(#.*\)/\1/' xxx.sh        把#後面的註解幹掉
其中-e是常用的一個option,通常是用在兩個以上的選項時。 其中,由於( )有特別意義所以需要反斜線escape一下。



Cyril Huang 2002-06-14