Os dois pontos :
são delimitadores para o padrão (à esquerda) e substituição (à direita). g
diz ao sed para substituir "globalmente" (mudar tudo o que corresponde ao padrão em cada linha, em vez de apenas o primeiro em uma determinada linha).
São usados três pontos, porque você precisa de três delimitadores. Então, :g
é realmente duas coisas: o último delimitador e o modificador "g".
As aspas são usadas caso esta parte da expressão "${path1}"
contenha algum caractere (quando a variável é substituída), o que causaria um erro no comando. Por exemplo, se contivesse um espaço ou tabulação, isso quebraria o parâmetro de substituição passado pelo shell para sed
em duas partes (um erro).
Então ... este comando
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
informa o sed
para ler / gravar o mesmo arquivo (a opção -i
). O arquivo é ${path2}
. Ele procura linhas contendo "INPUT_REPLACE"
e substitui essa cadeia em cada linha pelo que estiver na variável ${path1}
. Ele faz isso para cada ocorrência de "INPUT_REPLACE"
em cada linha.
A propósito: se "$ {path1}" contiver "INPUT_REPLACE" (ou a substituição fizer uma ocorrência), sed
não refazerá as coisas e substituirá novamente. Isso só acontece nas partidas iniciais.
A opção -i
não está em POSIX , mas está disponível com Linux e BSDs .