【发布时间】:2019-02-18 20:49:02
【问题描述】:
我在一个文件(file.sh)中有两行:
gc=$(sudo /usr/lib/jvm/java-8-openjdk-amd64/bin/jstat -gc $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
gccapacity=$(sudo /usr/lib/jvm/java-8-openjdk-amd64/bin/jstat -gccapacity $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
使用命令行,我想替换路径,保留其余部分。我想用 '$JAVA_HOME'bin/jstat 替换路径
我希望结果是:
gc=$(sudo /usr/lib/jvm/java-9-openjdk-amd64/bin/jstat -gc $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
gccapacity=$(sudo /usr/lib/jvm/java-9-openjdk-amd64/bin/jstat -gccapacity $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
我不想添加原始行的完整路径,因为我不知道已经安装了哪个版本。我只知道会开始
/usr/lib/jvm/
编辑:感谢@Walter-a
**ubuntu@ubuntu:~$** echo $JAVA_HOME
/usr/lib/jvm/java-11-oracle
**ubuntu@ubuntu:~$** cat test.sh
gc=$(sudo /usr/lib/jvm/java-9-openjdk-amd64/bin/jstat -gc $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
**ubuntu@ubuntu:~$** sed -r "s#(sudo ).*(/bin/jstat)#\1${JAVA_HOME}\2#" test.sh
gc=$(sudo /usr/lib/jvm/java-11-oracle/bin/jstat -gc $pid | tail -1 | sed -e 's/[ ][ ]*/ /g')
【问题讨论】:
-
请将该示例输入的所需输出添加到您的问题中。
-
别忘了展示你自己的尝试
标签: shell unix command-line text-processing