Мне нужно создать текстовый файл, где его части должны быть заменены любым произвольным путем. Я хотел сделать это, скопировав файл шаблона, а затем заменив специальный шаблон, например, ${MY_PATH}
на произвольный путь (надеюсь, цитирование не требуется). Как сделать эту заменяющую часть (примеры sed
которые я видел до сих пор, казались проблематичными из-за произвольного пути).
1
1 ответ
2
Замена не требует большого цитирования: только обратная косая черта и разделитель регулярных выражений. Для удобства последнее часто может быть выбрано произвольно - вместо s/ .../.../ можно было бы во многих программах сказать s | ...| ... | или похожие.
Предполагая, что путь равен $path
, вы можете сделать:
epath=${path//'\'/'\\'}
epath=${epath//'|'/'\|'}
sed "s|\${MY_PATH}|$epath|g" < in > out
Или, если вы не боитесь других языков, вы можете использовать:
perl -e 'my $path = shift(@ARGV); while (<STDIN>) {s|\$\{MY_PATH\}|$path|g; print}' "$path" < in
(Не уверен, что я правильно понял образец, но вы поняли идею.)