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 [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一下。