Вставьте содержимое в файл шаблона, используя bash - PullRequest
1 голос
/ 20 марта 2012

У меня есть файл шаблона, который я хочу скопировать, а затем отредактировать из сценария, вставив содержимое в определенные точки шаблона.Например, мой файл шаблона может выглядеть примерно так:

...
rm -rf SomeDirectory
make install
#{INSERT-CONTENT-HERE}
do-something-else
...

В другом скрипте я хочу добавить содержимое в "# {INSERT-CONTENT-HERE}" внутри цикла, то есть

for i in c; do
  # Write content to the template file copy at the correct point.
done

Я думаю, sed - правильный инструмент, но я недостаточно знаком, чтобы знать синтаксис, и страница справки не помогает.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Вы можете скопировать вывод всех команд во временный файл, а затем скопировать содержимое всего этого файла в файл шаблона:

TEMPFILE=`mktemp` && (
  for i in c
    echo "SomeTextBasedOn $i" >> $TEMPFILE
  done
  sed -i '/{INSERT-CONTENT-HERE}/r '$TEMPFILE targetfile
  rm $TEMPFILE
)
1 голос
/ 20 марта 2012

Пример:

echo "Line #{INSERT-CONTENT-HERE}" | sed 's/#{INSERT-CONTENT-HERE}/---/'

Чтобы изменить файл:

sed -i 's/#{INSERT-CONTENT-HERE}/---#{INSERT-CONTENT-HERE}/' filename

, где -i означает редактирование на месте, поэтому будьте осторожны

если вы делаете:

sed -i.bak 's/#{INSERT-CONTENT-HERE}/---/' filename

оригинал должен быть сохранен как filename.bak

также для выполнения нескольких замен в каждой строке используйте флаг g:

sed -i.bak 's/#{INSERT-CONTENT-HERE}/---/g' filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...