linux - 如何用包含 Linux 文件中另一行(新目录路径)的变量替换一行(目录路径)?

标签 linux bash awk sed

我有一个包含以下内容的文件:

aaaaaaaaaa
export ORACLE_HOME=/home/oracle/test/prod/db_1
bbbbbbbbbb

现在我想替换

export ORACLE_HOME=/home/oracle/test/prod/db_1

像下面这样的东西:

export ORACLE_HOME=/u01/app/oracle/product/11204/dbhome_1

我尝试了通过 Google 找到的多种方法,例如使用“sed”或“awk”,但都没有用。我试过了:

export D1="export ORACLE_HOME=/u01/app/oracle/product/11204/dbhome_1"
sed -i -e "s+export ORACLE_HOME=/home/oracle/test/prod/db_1+$D1+" file.lst

注意:正如谷歌搜索所说,由于字符串包含“/”,因此需要使用不同的分隔符,如“+”。

你能告诉我正确的命令吗?

最佳答案

sed -r 's~(ORACLE_HOME=).*~\1new/path/here~'

这里使用~作为分隔符。如果新路径是 bash 变量,则可以转义引号

sed -r 's~(ORACLE_HOME=).*~\1'$D1'~'

关于linux - 如何用包含 Linux 文件中另一行(新目录路径)的变量替换一行(目录路径)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662031/

相关文章:

Java 1.8.121 不适用于 linux - NoClassDefFoundError

bash - 从另一个 shell 提供命令行 shell

linux - 命令 "echo"在 awk 中无效

linux - 在文件中的变量后写入新行

linux - 更改ssh端口

linux - 为什么设置了权限却无法启动 SSH shell?

php - 通过 php/shell 脚本在 linux 中创建一个文件?

mysql - 使用sed解析文本文件以生成CSV文件

awk - 使用 awk 从字段中删除空格

linux - 轻松自动 Magento 存储 DB + 文件 Linux 服务器备份?