2013-05-15 31 views
1

我有以下sed命令來替換一個字符串與其他許多文件,在文件中替換字符串:使用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/* 

不幸的是,這是行不通的。我用「」而不是「',所以變量被使用和使用,作爲分隔符,所以我不需要轉義/

我在這裏錯過了什麼?

回答

1

你可以用這個試試,

sed -iE "s,$ORIG_CUBES,$DEST_CUBES,g" $TMP_FOLDER/data_sources/* 
+0

它的工作原理也沒有用'E':'sed的-i 「S $ ORIG_CUBES,$ DEST_CUBES,G」 $ TMP_FOLDER/data_sources/*' –