使用 sed 使用环境变量替换复杂的行

罗布科

我有一个文件:foo

该文件有一行:

JVMDATA="$(${TIMEOUT} sudo /usr/lib/jvm/jdk1.8.0_92/bin/java -jar ${JVMINSPECTOR} ${PID} 2>&1)"

我想将 /usr/lib/jvm/jdk1.8.0_92/bin/java 替换为:

JAVA_HOME/bin/java 

我该怎么做呢?

杰格雷夫

一种方法可以是这样的:

sed -e 's|/usr/lib/jvm/jdk1.8.0_92/bin/java|JAVA_HOME/bin/java|'  original.txt  > new.txt
cp original.txt original.txt.sav
mv new.txt original.txt

这使用 sed 模式替换 s/old/new/。通常,使用斜杠很痛苦,因为您需要逃避它们。在我的系统上 sed 容忍竖线模式分隔符,以便使其更具可读性。我怀疑您想将其更改为$JAVA_HOME...(注意前导美元符号)。

为了完整起见,这里有一个使用更常见斜杠模式分隔符的版本:

sed -e 's/\/usr\/lib\/jvm\/jdk1.8.0_92\/bin\/java/JAVA_HOME\/bin\/java/' original.txt > new.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章