sed為串流編輯器,可直接編輯檔案的資料流(stream),其工作模式為比對每一資料列,若符合樣式,即執行指定的動作。
要注意sed並不會修改檔案的內容,而是讀取檔案後,修改其內容再送到標準輸出。
#sed 'pattern cmd' files
sed syntax
- #sed '1,4d' thisfile
刪除thisfile的第1~4列,剩下的顯示出來 - #sed '/http/d' thisfile
刪除thilsfile中含有http字串的所有列,剩下的顯示出來 - #sed '/[0-9]\{3\}/d' thisfile
刪除thisfile中含有3個數字的所有列,剩下的顯示出來 - #sed '/^$/' thisfile
刪除thisfile中的所有空白列,剩下的顯示出來 - #sed '/http/!d' thisfile
刪除thilsfile不含有http字串的所有列,剩下的顯示出來 - #sed -n '/http/p' thisfile
印出thisfile中含有http字串的所有列(-n是抑制預設全部印出的選項) - #sed -n 's/http/web/gp' thisfile
將thislfile中所有的http字串改為web, s為取代(substitute)的命令, g表示全域(global),不加g時,只會更換第一個找到的http字串 - #sed -n 's/http//gp' thisfile
將thisfile中所有的http字串刪除 - #sed 's/^...//' thisfile
將thisfile中每一行的前三個字元刪除 - #sed -n 's/\(http\)/\1s/gp' thisfile
使用\1將符合http字串的部份存起來,再抓出來使用,所以上面是將每一列中的http字串換成https字串 - #sed -n '/AAA/ s/123/456/p' thisfile
找到在thisfile中有AAA的資料列後,再將該列的123換成456 - #sed -n '/AAA/,/DDD/ s/123/456/p' thisfile
找到在thsifle中AAA列至DDD列的所有資料列中,將123換成456 - #sed -n '2,4 s/123/456/p' thisfile
將thisfile中第2~4列的123換成456