Problem
一開始的目的是為了取代檔案$FILEPATH中的$target字串為$replace_str,如以下script:
cmd="sed -i 's/$target/$replace_str/g' $FILEPATH" eval $cmd
但因為$replace_str是一個路徑字串,會包含/(Slash),對sed來說是特殊字元,我們必須在/(Slash)前加一個\(Backslash)。所以我要做的事情就是取代$replace_str中的/為\/。
How to?
Method 1 - awk
基本上就是透過gsub這個函式:
new_replace_str=`echo $replace_str | awk '{gsub("/","\\\/",$1);print $1}'`
Method 2 - variable replacement
變數內容取代有兩種寫法:
${變數名稱//舊字串/新字串} 取代所有符合字串 ${變數名稱/舊字串/新字串} 僅取代第一個符合字串
對於處理路徑的問題可以這樣寫:
new_replace_str=${replace_str//\//\\/};
後記
- sed也可以做到取代檔案內某個字串的效果,可以參考link。
留言
張貼留言