2012-12-10 68 views
1

我試圖在$HOME/findreplace/目錄中的所有文件中用以下語句替換字符串#########$,但我得到sed: Function s_#########_ cannot be parsed.錯誤。

在此先感謝您的幫助。

for file in $HOME/findreplace/*.* 
do 
    sed -e "s_#########_$_g" $file> /tmp/tempfile.tmp 
    mv /tmp/tempfile.tmp $file 
    echo "Modified: " $file 
done 

回答

2

你可以這樣做:

for file in $HOME/findreplace/*.* 
do 
    sed -i 's/#########/\$/g' "$file" 
    echo "Modified: $file" 
done 

說明:

  • 使用/,而不是在那裏你必須_之前匹配的模式和模式,以取代分離。
  • 使用\逃脫$焦炭
  • 使用單引號代替雙引號,以避免bash的自動展開的東西(字符串用單引號將字面解釋)
  • 使用-i選項sed做就地編輯,因此您可以避免使用臨時文件。
  • 你幾乎總是想用雙引號括起你的變量(如$file)。
+0

感謝它的工作像一個魅力 –