Заменить значение в одинарных кавычках в строке, содержащей определенное слово, используя команду sed

У меня есть строка, как показано ниже в html-файле,

shahar.push(['remoteUrl', 'staging.zazzercode.com']); 

В зависимости от среды я хочу заменить значение remoteUrl командой sed .

например,

 shahar.push(['remoteUrl', 'staging.zazzercode.com']); shahar.push(['remoteUrl', 'production.zazzercode.com']); 

я использовал

 sed -i '/remoteUrl/c\shahar.push(['remoteUrl','staging.zazzercode.com']);' predict.html 

Он работает, но удаляет одинарные кавычки над 'remoteUrl' и 'staging.zazzercode.com' вызывая html-ошибку.

 shahar.push([remoteUrl, staging.zazzercode.com]); 

Поэтому, чтобы быть в безопасности, я хочу изменить команду sed только для изменения значения между двумя одинарными кавычками после , в строке с remoteUrl .

Или мне нужны другие варианты sed , чем то, что я знал, чтобы заменить целую линию, но одинарные кавычки.

2 Solutions collect form web for “Заменить значение в одинарных кавычках в строке, содержащей определенное слово, используя команду sed”

Проблема в том, что bash обрабатывает вашу командную строку до того, как sed схватит ее. В этом случае решения состоят в том, чтобы изменить внешние кавычки на двойные кавычки:

 sed -i "/remoteUrl/c\shahar.push(['remoteUrl','staging.zazzercode.com']);" predict.html 

Проблема заключалась в том, что bash выполняет удаление цитат перед передачей команды sed . В глазах Баша ваша оригинальная команда представляла собой серию строк с одним кавычком, а bash удалял все кавычки. В приведенной выше версии bash видит одну строку с двумя кавычками. В то время как bash удаляет эти двойные кавычки перед передачей строки в sed , она оставляет только отдельные одиночные кавычки.

Поэтому, чтобы быть в безопасности , я хочу изменить команду sed чтобы изменить значение между двумя одинарными кавычками после запятой ( , ) в строке с 'remoteUrl' .

 sed "s/\('remoteUrl',.*'\).*\('\)/\1staging.zazzercode.com\2/" 

s – поиск, замена и замена. \( и \) в "старой" строке (указанной вначале) идентифицируют подстроки. \1 и \2\ n , до \9 ) скопируйте эти подстроки в строку замены.

  • почему существует случайное поведение для фоновой работы?
  • Как изменить рабочие каталоги с помощью KDialog?
  • Удаление всех изображений, сделанных с помощью конкретной камеры.
  • bash - Изменение по строкам Interactively
  • Проблема при попытке простого цикла в bash
  • Как использовать команду find для выполнения двух условий в Linux
  • Как передать переменную среды скрипту?
  • Ошибка скрипта Bash, пытающегося записать в файл: нет такого файла или каталога
  • Как проверить, запрашивалась ли предыдущая команда для ввода?
  • Cygwin, bash, изменить переменную окружающей среды?
  • Изображение проверки подлинности Linux существует на URL-адресе Apache
  • Linux и Unix - лучшая ОС в мире.