1

Мне нужно создать текстовый файл, где его части должны быть заменены любым произвольным путем. Я хотел сделать это, скопировав файл шаблона, а затем заменив специальный шаблон, например, ${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

(Не уверен, что я правильно понял образец, но вы поняли идею.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .