Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用sed替换文件中的字符串_Bash_Sed - Fatal编程技术网

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

Bash 使用sed替换文件中的字符串,bash,sed,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/*

我确实有以下
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/*
不幸的是,这不起作用。我使用了“”而不是“”,所以变量被用作分隔符,,所以我不需要转义
/

我这里缺少什么?

你可以试试这个

sed -iE "s,$ORIG_CUBES,$DEST_CUBES,g" $TMP_FOLDER/data_sources/*
你可以试试这个

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

它也可以不使用
E
sed-i's、$ORIG_CUBES、$DEST_CUBES、g“$TMP_文件夹/数据源/*
它也可以不使用
E
sed-i's、$ORIG_CUBES、$DEST_CUBES、g“$TMP_文件夹/数据源/*