使用 sed 更改 sql 脚本中的路径

使用 sed 更改 sql 脚本中的路径

我正在尝试从 bash 脚本更改 oracle sql 脚本中的路径。

read -e -p "Enter the ORACLE SID: " -i "orcl" ORACLE_SID_VALUE
sed -i "DEFINE tsdir = '/u02/app/oracle/oradata/orcl';/c\DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'" schema-install.sql

当我执行脚本时,出现以下错误: sed: -e 表达式 #1, 字符 2: 命令后的额外字符

谁能帮我使用正确的 sed 命令。


更多信息

只是为了澄清:在文件 schema-install.sql 中,有一行定义了 Oracle 数据库的存储位置。

DEFINE tsdir = '/u02/app/oracle/oradata/orcl';

我想改变这个值奥尔克到我输入变量 ORACLE_SID_VALUE 的值。

答案1

我会尝试:

sed -i -e "/DEFINE tsdir = /c\
DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'
" schema-install.sql

sed被路径定义中的 / 混淆。

答案2

据我从你的问题中了解到,你正在尝试替换

DEFINE tsdir = '/u02/app/oracle/oradata/orcl'

经过

DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'

如果这是您想要做的,您可以使用以下方法来实现

sed -i "s#DEFINE tsdir = '/u02/app/oracle/oradata/orcl'#DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'#" schema-install.sql

相关内容