Заменить значение в одинарных кавычках в строке, содержащей определенное слово, используя команду 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 ) скопируйте эти подстроки в строку замены.

  • Может ли касификация case bash?
  • Как я могу запретить умирать скрипту, если идентификатор процесса не существует?
  • Скрипт для просмотра / mysqlshare присутствует во всех серверах списков, делая только первую итерацию
  • Использование цикла for для петли над несколькими массивами в bash
  • как правильно передать _set_ параметров с пробелами в функцию оболочки
  • Тестирование, если строка существует внутри массива строк
  • Как сортировать коллекцию строк из разных файлов?
  • обнаружить, если PDF-файл сделан из изображений
  • Как скопировать файлы изображений, имена которых не заканчиваются размером их разрешения?
  • Shell Scripting: как использовать часть пути к файлу в качестве имени файла?
  • Регистрация выходных команд на нескольких серверах ssh
  • как отредактировать следующую строку после сопоставления шаблона и добавить строку, если она не существует
  • Linux и Unix - лучшая ОС в мире.