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