1

У меня есть следующий код; ToString = "java.extended.properties = -XX:MaxPermSize\= 128m -XX:CompileCommand = exclude, com/tibco/repo/RVRepoProcessBridge, handleServerHeartbeat"

sed -i "s @. java.extended.properties.@ $ ToString @ g "" $ ToFile "

Он исправляет ToFile, но в строке нет 2-х. Как я могу гарантировать, что они распознаются как часть строки?

1 ответ1

0

Попробуйте убежать от «.» в регулярном выражении sed, чтобы быть более точным.

И для переменной ToString:

  1. экранируйте '\', чтобы интерпретатор оболочки расширился до одной косой черты (в третьем пункте ниже),
  2. при определении этой переменной используйте одинарные кавычки, чтобы она не раскрывалась, и
  3. расширять (двойными кавычками) при использовании его внутри sed, чтобы получить правильный конечный результат.

Итак, что-то вроде этого должно работать:

ToString='java.extended.properties=-XX\\:MaxPermSize\\=128m -XX:CompileCommand=exclude,com/tibco/repo/RVRepoProcessBridge,handleServerHeartbeat'

sed -i "s@.*java\.extended\.properties.*@""$ToString""@g" "$ToFile"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .