sed `grep` 查找並替換

sed "s/libletvwatermark/libletv_watermark/" `grep -rl libletvwatermark`php

 

 

grep [options]spa

3.主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的全部行。code

 

sed替換的基本語法爲:

字符串

複製代碼
代碼以下:
sed 's/原字符串/替換字符串/'


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

io

複製代碼
代碼以下:
sed "s/原字符串包含'/替換字符串包含'/" //要處理的字符包含單引號


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

class

複製代碼
代碼以下:
sed 's?原字符串?替換字符串?' //自定義分隔符爲問號


能夠在末尾加g替換每個匹配的關鍵字,不然只替換每行的第一個,例如:

sed

複製代碼
代碼以下:
sed 's/原字符串/替換字符串/' //替換全部匹配關鍵字


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

file

複製代碼
代碼以下:
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」直接在文件中替換:

grep

複製代碼
代碼以下:
sed -i 's/原字符串/替換字符串/g' filename //替換文件中的全部匹配項
相關文章
相關標籤/搜索