我有一个模板文件,我想要复制,然后从脚本编辑,在特定的模板点插入内容。例如,我的模板文件可能是,
...
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
是正确的工具,但我不太熟悉,不知道语法,手册页没有帮助。
答案 0 :(得分:1)
一个例子:
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
答案 1 :(得分:1)
您可以将所有命令的输出复制到临时文件中,然后将整个文件的内容复制到模板文件中:
TEMPFILE=`mktemp` && (
for i in c
echo "SomeTextBasedOn $i" >> $TEMPFILE
done
sed -i '/{INSERT-CONTENT-HERE}/r '$TEMPFILE targetfile
rm $TEMPFILE
)