web-dev-qa-db-ja.com

Makefileの1行をSTDINに置き換えます

1つのMakefileターゲットが以下を担当することになっています。

  • $ Perl Markdown.pl src/index.mdの出力を取得する(htmlへのマークダウン)
  • その文字列を使用して1行を置き換えます。たとえば、ファイルsrc /template.htmlで始まるCONTENTのようなものです。 template.htmlには、その行を持つ他の行はありません。

これを達成するためのエレガントな方法は何ですか?

5
chelmertz

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に変更します。そうしないと、メイクファイルが解釈するため、必要になります)

target:
    awk -f convert.awk src/template.html > build/template.html
3
Kevin