歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux中sed命令字符串替換的用法詳解

  Linux系統中sed命令可以將字符串批量替換,省去了很多麻煩,下面由學習啦小編為大家整理了linux系統中sed命令字符串替換的用法詳解,希望對大家有幫助!

  linux中sed命令字符串替換的用法詳解

  sed替換的基本語法為:

  sed 's/原字符串/替換字符串/'

  單引號裡面,s表示替換,三根斜線中間是替換的樣式,特殊字符需要使用反斜線”\”進行轉義,但是單引號”‘”是沒有辦法用反斜線”\”轉義的,這時候只要把命令中的單引號改為雙引號就行了,例如:

  sed "s/原字符串包含'/替換字符串包含'/" //要處理的字符包含單引號

  命令中的三根斜線分隔符可以換成別的符號,這在要替換的內容有較多斜線是較為方便,只需要緊跟s定義即可,例如換成問號”?”:

  sed 's?原字符串?替換字符串?' //自定義分隔符為問號

  可以在末尾加g替換每一個匹配的關鍵字,否則只替換每行的第一個,例如:

  sed 's/原字符串/替換字符串/' //替換所有匹配關鍵字

  上箭頭”^”表示行首,美元”$”符號如果在引號中表示行尾,但是在引號外卻表示末行(最後一行),這裡犯二了,搜了半天哪個符號表示首行,半天才想起來,首行就是數字”1″啊.那麼在行首和行尾添加字符串就是把行尾和行首替換,例如:

  sed 's/^/添加的頭部&/g' //在所有行首添加

  sed 's/$/&添加的尾部/g' //在所有行末添加

  sed '2s/原字符串/替換字符串/g' //替換第2行

  sed '$s/原字符串/替換字符串/g' //替換最後一行

  sed '2,5s/原字符串/替換字符串/g' //替換2到5行

  sed '2,$s/原字符串/替換字符串/g' //替換2到最後一行

  替換樣式可以多個在同一條命令中執行,用分號”;”分隔,例如:

  sed 's/^/添加的頭部&/g;s/$/&添加的尾部/g' //同時執行兩個替換規則

  sed處理過的輸出是直接輸出到屏幕上的,要保存可以將輸出重定向,或者使用參數”i”直接在文件中替換:

  sed -i 's/原字符串/替換字符串/g' filename //替換文件中的所有匹配項

  linux中sed命令批量替換字符串操作

  使用sed命令可以進行字符串的批量替換操作,以節省大量的時間及人力;

  使用的格式如下:

  sed -i "s/oldstring/newstring/g" `grep oldstring -rl path

  其中,oldstring是待被替換的字符串,newstring是待替換oldstring的新字符串,grep操作主要是按照所給的路徑查找oldstring,path是所替換文件的路徑;

  -i選項是直接在文件中替換,不在終端輸出;

  -r選項是所給的path中的目錄遞歸查找;

  -l選項是輸出所有匹配到oldstring的文件;

  實例:

  1. 替換指定文件的字符串

  sed -i "s/oldstring/newstring/g" filename

  sed -i "s/6/sk/g" ./test01.txt

  2. 字符串替換批量文件操作

  sed -i "s/6/sk/g" ·grep 6 -rl /home/work/test`

  sed -i "s/6/sk/g" ·grep 6 -rl /home/work/test/*.sh`

  可將test目錄下的所有相關文件都進行字符串替換

  補充:Linux中sed命令使用時的小技巧

  在sed的命令行中引用Shell變量時要使用雙引號,而不是通常所用的單引號。下面是一個根據name變量的內容來刪除named.conf文件中zone段的腳本:

  name='zone "localhost"'

  sed "/$name/,/};/d" named.conf

  sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

  例如:替換/home下所有文件中的www.itbbs.cn為chinafar.com

  # sed -i “s/www.itbbs.cn/chinafar.com/g” `grep www.itbbs.cn -rl /home`

Copyright © Linux教程網 All Rights Reserved