Как использовать кавычки в САС запятых? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть файл с именем "/java.conf", со строкой ниже,

JAVA_OPTS="-Xms8250m -Xmx9786m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"

Я хочу заменить строку, как показано ниже,

JAVA_OPTS="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"

Я пробовал ниже,

JVM_HEAP_SIZE="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"

sed -i  "s/-Xms.*/$JVM_HEAP_SIZE/g" /java.conf

Вывод:

JAVA_OPTS="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40

Проблема: Отсутствует двойная кавычка (") в конце строки.

Ожидается Если в конце я получу дополнительное «, то проблема решена.

В основном я пытаюсь изменить« -Xms »и« -Xmx »значения, используя переменные.Мне нужно использовать переменную, потому что значение может меняться время от времени.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Ваше регулярное выражение sed соответствует всему от "-Xms" до конца строки (включая двойную кавычку в конце). Вам просто нужно поместить двойную кавычку обратно как часть строки замены:

sed -i "s/-Xms.*/${JVM_HEAP_SIZE}\"/" /java.conf

Обратите внимание, что, поскольку шаблон поиска соответствует всей строке, нет необходимости ставить 'g' в конце команды.

0 голосов
/ 07 мая 2018

Используйте следующее:

JVM_HEAP_SIZE='-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"'

sed -i "s/-Xms.*/$JVM_HEAP_SIZE/g" /java.conf

Текст не раскрывается внутри одинарных кавычек, поэтому двойная кавычка остается неизменной и заменяет ту, которую соответствует sed регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...