使用sed替换文件中的字符串

时间:2013-05-15 12:05:41

标签: bash 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 个答案:

答案 0 :(得分:1)

你可以试试这个,

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