2011-01-14 14 views
0

次のスクリプトを使用して、ファイル内の廃止予定機能を検索して新しいものに置き換えています。廃止予定の機能を検索して置き換えるスクリプト

sed: -e expression #1, char 60: invalid reference \2 on `s' command's RHS 
sed: -e expression #1, char 52: invalid reference \2 on `s' command's RHS 
sed: -e expression #1, char 50: invalid reference \2 on `s' command's RHS 
sed: -e expression #1, char 51: invalid reference \2 on `s' command's RHS 

は私が間違っていただきまし把握することができません:私はこのスクリプトを実行すると

5 for strFile in `ls deprecated_functions_search_and_replace.txt ` 
    6 do 
    7  sed "s/ereg_replace[^\(]*(\([^,]*\),/preg_replace\1('#'.\2.'#',/g" $strFile > temp_file 
    8  mv $strFile $strFile".bakup" 
    9  mv temp_file $strFile 
10 
11  sed "s/eregi[^\(]*(\([^,]*\),/preg_match\1('#'.\2.'#i',/g" $strFile > temp_file 
12  mv $strFile $strFile".bakup" 
13  mv temp_file $strFile 
14 
15  sed "s/ereg[^\(]*(\([^,]*\),/preg_match\1('#'.\2.'#',/g" $strFile > temp_file 
16  mv $strFile $strFile".bakup" 
17  mv temp_file $strFile 
18 
19  sed "s/split[^\(]*(\([^,]*\),/preg_split\1('#'.\2.'#',/g" $strFile > temp_file 
20  mv $strFile $strFile".bakup" 
21  mv temp_file $strFile 
22 
23  sed "s/mysql_escape_string/mysql_real_escape_string/g" $strFile > temp_file 
24  mv $strFile $strFile".bakup" 
25  mv temp_file $strFile 
26 
27  sed "s/set_magic_quotes_runtime(0)/\/\/set_magic_quotes_runtime(0)/g" $strFile > temp_file 
28  mv $strFile $strFile".bakup" 
29  mv temp_file $strFile 
30 
31  sed "s/ini_get('safe_mode')/false/g" $strFile > temp_file 
32  mv $strFile $strFile".bakup" 
33  mv temp_file $strFile 
34 
35  sed "s/session_register('\(.*\)')/$_SESSION['\1']=$\1/g" $strFile > temp_file 
36  mv $strFile $strFile".bakup" 
37  mv temp_file $strFile 
38 
39  sed "s/session_unregister('\(.*\)')/$_SESSION['\1']=''/g" $strFile > temp_file 
40  mv $strFile $strFile".bakup" 
41  mv temp_file $strFile 
42 
43 done 

しかし、私が言ってエラーを取得しています。誰か助けてください。よろしく。

+0

sedは、キャプチャ括弧が1組しかないときに '\ 2'を使用していることを伝えています。 –

答えて

1

をコピーしていなかった私は、今日のsed知らないが、parenthsをグループ化するように見えますがそうでない場合は、特別な文字のエスケープ、リテラルです。私はまた、通常のリテラルとキャプチャグループがバックスラッシュのように見える置換側ではわかりません。

したがって、session_registerの例を使用すると、キャプチャグループが欠落しているように見えます。 これは修正のようです:s/ereg_replace\([^(]*\)(\([^,]*\),/preg_replace\1('#'.\2.'#',/g"

+0

よろしいですか?ありがとう – Kartins

関連する問題