将包含任意特殊字符的多行字符串插入shell脚本中的模板文件

时间:2011-07-04 13:41:48

标签: bash shell

类似的东西:

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 个答案:

答案 0 :(得分:1)

[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