我完全新打坏脚本所以原谅我....我尝试一些HTML内容,可以包含标准的标题模板相结合,模板都有,我想我可能只是查找和替换一个占位符“REPLACEME”上。 循环简单地重复目录中的所有文件的操作。
REPLACEME="REPLACEME"
for file in *.html
do
TEMPLATE=$(<../template/template.html)
CONTENT=$(<$file)
OUTPUT="${TEMPLATE/"$REPLACEME"/"$CONTENT"}"
echo $OUTPUT > ../compiled/$file
done
这工作,但生成的HTML文件已被去除的换行符,这使得它看起来像垃圾! 任何人都可以帮忙吗?
更换:
echo $OUTPUT > ../compiled/$file
附:
echo "$OUTPUT" > ../compiled/$file
外壳上执行不带引号的变量分词 。 与默认值IFS
,这意味着空白,其包括翼片和换行符的所有序列,与单个坯件代替。 为了防止这种情况,把变量双引号,如上图所示。
使用sed
,你可以实现它象下面这样:
sed -i 's/REPLACEME/new_text/g' /path/to/your/template.html
该-i
在sed选项是就地编辑与该g
选项是全局替换。
编辑1:
如果您需要使用内部变量sed
,你可以这样来做
var="Sometext";
sed -i "s/REPLACEME/$var/g" /path/to/your/template.html
这里介意双引号,它使外壳扩展变量。
如果您的系统支持的GNU AWK( gawk
)你可以实现以上
gawk '
{
$0=gensub(/REPLACEME/"NEWTEXT","g",$0)
printf "%s\n", $0
}' < /path/to/your/template.html > newtemplate.html && mv newtemplate.html template.html