sed で、テキストファイルの一部分を他のテキストファイルでもって置換するスクリプトを記述していました。その際、改行だと問題なく動作するが、セミコロンを使うとエラーになる事象に遭遇しました。

これは、何が起きているのでしょうか。

スクリプト: コメントアウト部分の方を利用するとエラー(sed: -e expression #1, char 0: unmatched{'`)になる

#!/bin/bash

cat template.txt |
    #     sed '/TMPL/{r template-value.txt; d;}'
    sed '/TMPL/{
        r template-value.txt
        d
    }'

参考までに、 template.txt:

abc
efg
TMPL
hij

template-value.txt:

zzzz
zz
zzzz