Вашей проблема в том, что вы вложенность цитирования механизмов (разделители), когда вы не должны.
Как правило, вы должны использовать одиночные кавычки, чтобы вложить в sed
сценарий в целом:
sed -i '' -e 's/curl -L/curl -k -L/g' install*
Используя одиночные кавычки, сценарий защищен от случайного толкования по оболочка.
Если вы хотите, чтобы оболочка для интерпретации частей sed
сценария заранее, сплайсинга этих частей в как двойных -quoted строк.
Для sed
«s s
функции, то /
, что выступает в качестве разделителя - не дополнительных цитировал из строк между /
случаями необходимо использовать, и ваше использование '
просто вызывает sed
рассматривать эти одиночные кавычки часть регулярного выражения для соответствия/строка замены. (В стороне: вы можете выбрать разделитель, отличный от /
).
Тем не менее, если вам нужно, чтобы заставить интерпретацию некоторых символов, как литералов, использования \
-escaping, например, с помощью \.
в регулярных выражениях для представления буквального.
Это только quoting механизм, который sed
сам поддерживает.
Однако в вашем конкретном случае , ни строка, используемая в регулярном выражении, ни строка, используемая в качестве замены, не нуждаются в ускорении.
Для родового способа избежать строк для использования в качестве литералов в таких ситуациях см https://stackoverflow.com/a/29613573/45375.
Спасибо @ mklement0 за функциональный пример и специально за подробное объяснение. Я многому научился из этого ответа. – thiagoveloso
@thiagoveloso: Мое удовольствие; Я рад слышать это. – mklement0