1. 程式人生 > >sed 替換基礎使用

sed 替換基礎使用

我們簡單地使用sed替換文字中的內容 sed 's/dog/elephon/' testfile,就是感覺匹配上就行,而不是按照單詞分割。

s使用的方式,可以在後面新增flags操作,s/pattern/replacement/flags

  • 數字,表明新文字將替換第幾處模式匹配的地方
  • g,表明新文字將會替換所有匹配的文字
  • p,表明原先行的內容要打印出來;
  • w file,將替換的結果寫到檔案中

比如sed 's/h/o/2' testfile

p操作使用-n選項,可以列印與替換命令模式匹配的行,sed -n 's/dog2/dophine/p' testfile

sed編輯器允許選擇其他字元來作為替換命令中的字串分隔符,sed -n 's!dog2!dophine!p' testfile 和上面的效果是一樣的不然對於我們常常使用的正斜線(/),那麼你就要寫成(\/)這樣的形式,還是挺頭疼的。

如果只想將命令作用 於特定行或某些行,則必須用行定址:

  • 以數字形式表示行區間
  • 用文字模式來過濾出行

sed編輯器會將文字流 中的第一行編號為1,然後繼續按順序為接下來的行分配行號  

試試將第二行的資料修改了,sed  '2s/h/o/' testfile

當然可以加上很多行的修改 sed  '2,3s/h/o/' testfile

或者說想將命令作用到文字中從某行開始的所有行,使用美元符sed  '2,$s/h/o/' testfile

sed編輯器允許指定文字模式來過濾出命令要作用的行,格式:/pattern/command

比如使用這樣的 sed  '/dog2/s/h/o/' testfile

當然更加牛逼的功能是使用正則表示式,來達到更好的模式匹配的效果,比如簡單點 sed -n  '/^The/s/h/o/p' testfile

未完待續!!!