SED, чтобы найти и заменить точное слово, начинающееся с $

У моего php-файла есть определенные переменные с $ downtime_hosts, мне нужна единственная команда, чтобы просто найти и заменить целые $downtime_hosts = 8; в $downtime_hosts = 15; и не затрагивая другие $downtime_hosts используется несколько раз в файле.

здесь мой номер 8,15,16 может меняться в любое время, мне нужно найти строку, начинающуюся с $downtime_hosts = anyinteger и просто заменить моей новой строкой $ downtime_hosts = newinteger. обратите внимание на anyinteger / newinteger=2,3,4,15 или любой

$downtime_hosts = 8;

$total_hosts = $all_hosts - $downtime_hosts;

if ($host_up == $total_hosts )

Hosts under downtime $downtime_hosts `

Любые входы действительно приветствуются!

One Solution collect form web for “SED, чтобы найти и заменить точное слово, начинающееся с $”

 sed 's/$downtime_hosts = 8;/$downtime_hosts = 15;/' file.php 

$ представляет проблем, поскольку он не будет выступать в качестве якоря, если он не найден в конце шаблона. Сценарий sed должен быть одинарным, хотя оболочка в противном случае попытается развернуть $downtime_hosts в качестве переменной оболочки.

Чтобы соответствовать шаблону только в начале строки:

 sed 's/^$downtime_hosts = 8;/$downtime_hosts = 15;/' file.php 

Если целое число 8 может быть любым целым числом:

 sed 's/^$downtime_hosts = [0-9]*;/$downtime_hosts = 15;/' file.php 

Чтобы заменить целое число на целое число, содержащее переменную оболочки $newint :

 sed "s/^\$downtime_hosts = [0-9]*;/\$downtime_hosts = $newint;/" file.php 

Обратите внимание, что теперь нам нужно использовать двойные кавычки вокруг скрипта редактирования sed чтобы оболочка расширила переменную $newint . Это также означает, что мы вынуждены избегать двух существующих $ из оболочки.

  • Может ли работать с регулярным выражением?
  • Преобразование содержимого файла в нижний регистр и сохранение результата в том же файле
  • Есть ли tr для перевода в более длинные строки?
  • как разделить файл и строки
  • Самый быстрый и самый основной способ заменить «\ r \ n» на «\ n» в файле?
  • распечатать последнее поле из строки + альтернатива для awk
  • почему моя первая операция с трубой не удаляла символ новой строки?
  • Чтобы удалить новые строки после пустой строки
  • как использовать tr для удаления восьмеричной последовательности символов?
  • Heirloom Toolchest tr: ошибка (ы), пытающаяся удалить дополнение к набору, содержащему многобайтовый символ?
  • команда tr не работает с восьмеричными последовательностями
  • Linux и Unix - лучшая ОС в мире.