Вставить многострочную строку с произвольными специальными символами в файл шаблона в сценарии оболочки - PullRequest
2 голосов
/ 04 июля 2011

Что-то вроде:

cat template.txt | ruby -e 'puts STDIN.read.sub("%placeholder%", IO.read("content.txt"))' > output.txt

Или:

ed template.txt <<EOF
/%placeholder%/d
.r content.txt
w output.txt
EOF

Есть ли альтернативы?

1 Ответ

1 голос
/ 04 июля 2011
[me@home]$ sed -e '/\$xxx/r content.txt' -e '/\$xxx/d' template.txt 
.,:;-+=_'"`*^?!
.,:;-+=_'"`*^?!
&$%#@|/\()[]{}<>
&$%#@|/\()[]{}<>

Первая команда ищет $xxx, а затем печатает содержимое content.txt. Второй удаляет $xxx.

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

sed -e '/\$xxx/{
   r content.txt
   d
}' template.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...