一个 Makefile 目标应该负责:
$ perl Markdown.pl src/index.md
抓取(markdown 到 html)的输出- 使用该字符串替换一行,类似于
CONTENT
源自文件 src/template.html 的内容。 template.html 中该行没有其他行。
实现这一目标的优雅方法是什么?
答案1
就像 arcege 所说,不要修改实际的源文件。无论如何,使用以下命令会更容易awk
:
target:
awk '{if($$0=="CONTENT"){system("perl Markdown.pl src/index.md")}else{print}}' src/template.html > build/template.html
如果您想让该行看起来更简洁,您可以将该 awk 代码放入脚本中。 (如果这样做,请更改$$0
为$0
,这是必要的,因为否则 makefile 会解释它)
target:
awk -f convert.awk src/template.html > build/template.html
答案2
一条规则是你必须这样做不是调整来源构建中的文件,因此无需就地修改。使用“构建”目录或类似的目录。
template_markdown:
@mkdir -p build
cp -p src/template.html build
(echo /CONTENT/c; perl Markdown.pl src/index.md; echo .; echo w) | ed - build/template.html
这应该考虑到任何perl Markdown.pl
本身不发出句点(“.”)的情况。