1

sed多くのファイルである文字列を別の文字列に置き換える次のコマンドがあります。

sed -i 's/\/mnt\/disk-K\/99990_Analytics\/30000_OLAP\/31000_Cube\//\/home\/tgr\/Applications\/Saiku\/saiku-server\/tomcat\/webapps\/saiku\/WEB-INF\/classes\/foodmart\//g' /home/tgr/Applications/Saiku/tmp_data/data_sources/*

あるフォルダー名を別のフォルダー名に置き換えるだけで、正常に機能します。残念ながら、コマンドで手動でエスケープされた文字列の代わりに変数が必要です。私はもう試した:

ORIG_CUBES="/mnt/disk-K/99990_Analytics/30000_OLAP/31000_Cube/"
DEST_CUBES="/home/tgr/Applications/Saiku/saiku-server/tomcat/webapps/saiku/WEB-INF/classes/foodmart/"
TEMP_FOLDER="/home/tgr/Applications/Saiku/tmp_data"

sed -i "s\,$ORIG_CUBES,$DEST_CUBES,g" $TMP_FOLDER/data_sources/*

残念ながら、これは機能しません。'' の代わりに "" を使用したので、変数が使用さ,れ、セパレーターとして使用されるため、エスケープは必要ありません/

ここで何が欠けていますか?

4

1 に答える 1

1

これで試すことができます、

sed -iE "s,$ORIG_CUBES,$DEST_CUBES,g" $TMP_FOLDER/data_sources/*
于 2013-05-15T12:13:48.480 に答える