Script de shell do Linux: copie um arquivo (texto) e substitua um token por um caminho

1

Eu preciso criar um arquivo de texto onde partes dele devam ser substituídas por qualquer caminho arbitrário. Eu queria fazer isso copiando um arquivo de modelo e depois substituir um padrão especial, por exemplo, ${MY_PATH} com o caminho arbitrário (espero que não seja necessário citar). Como fazer isso substituindo parte (os sed -examples que vi até agora pareciam ser problemáticos por causa do caminho arbitrário).

    
por Mike L. 28.12.2011 / 21:23

1 resposta

2

A substituição não precisa de muita citação: apenas barras invertidas e o separador regexp. Por conveniência, o último pode freqüentemente ser escolhido arbitrariamente - ao invés de s /.../.../ pode-se, em muitos programas, dizer s | ... | ... | ou similar.

Assumindo que o caminho é $path , você poderia fazer:

epath=${path//'\'/'\'}
epath=${epath//'|'/'\|'}
sed "s|\${MY_PATH}|$epath|g" < in > out

Ou se você não tem medo de outros idiomas, pode usar:

perl -e 'my $path = shift(@ARGV); while (<STDIN>) {s|\$\{MY_PATH\}|$path|g; print}' "$path" < in

(Não tenho certeza se acertei a amostra, mas você entendeu.)

    
por 28.12.2011 / 21:49