Intereting Posts
Пустые страницы руководства после обновления до Kubuntu 18.04 как настроить: прокси с подтверждением правил просмотра интернета Что такое эквивалент Fedora 'apt-get purge'? cp file device: каталог на Minix Проверьте, принадлежит ли IP к определенному диапазону Как проверить, какие конкретные процессы (скрипты Python) запущены? Резервное копирование TAR на удаленный сервер Просмотр / просмотр содержимого файла, но новые строки не добавлены 64-битный Linux или 32-разрядный Linux с ядром PAE заставляет сервер x сбой при загрузке Есть ли правильный способ использовать один файл резервной копии VPS для создания клона VPS? Возможно ли монтировать файловые системы Windows без использования учетной записи root? Как избежать конфликтов между dnsmasq и systemd-разрешенными? Извлечь имена хостов из не хэшированных ssh known_hosts Использовать службу или systemctl для управления демонстрацией openvpn при загрузке? Как я могу возобновить экран, который мне не удалось отделить?

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 `

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

 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 . Это также означает, что мы вынуждены избегать двух существующих $ из оболочки.