Двоеточия :
являются разделителями для шаблона (слева) и подстановки (справа). g
указывает sed заменить "глобально" (изменить все, что соответствует шаблону в каждой строке, а не только первое в данной строке).
Используются три двоеточия, потому что вам нужно три разделителя. Итак, : g
- это на самом деле две вещи: последний разделитель и модификатор «g».
Кавычки используются в том случае, если эта часть выражения "$ {path1}"
содержит какой-либо символ (при подстановке переменной), который приведет к ошибке в команде. Например, если он содержит пробел или табуляцию, это разбивает параметр подстановки, переданный оболочкой в sed
, на две части (ошибка).
Итак ... эта команда
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
сообщает sed
читать / записывать тот же файл (параметр -i
). Это $ {path2}
. Он ищет строки, содержащие "INPUT_REPLACE"
, и заменяет эту строку в каждой строке тем, что находится в переменной $ {path1}
. Он делает это для каждого появления "INPUT_REPLACE"
в каждой строке.
Между прочим: если "$ {path1}" содержит "INPUT_REPLACE" (или замена вызывает возникновение), sed
не будет переделывать вещи и заменять снова. Это происходит только в начальных матчах.
Параметр -i
отсутствует в POSIX , но доступен в Linux и BSD .