У меня есть две строки в файле (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')