Esta é uma receita (bastante) básica que atenderá a sua necessidade apenas da forma especificada:
#!/bin/bash
REPLACEWITH="Your replacement text here"
STARTTAG="BeginNoticeMSG"
ENDTAG="EndNoticeMSG"
sed -E "s/(<\!\-\-$STARTTAG\-\->)(.*)(<\!\-\-$ENDTAG\-\->)/$REPLACEWITH/" -i target_file.html
Ele entrará em várias formas diferentes se a entrada for diferente, especialmente se a "tag" de entrada estiver dividida em várias linhas.
Usar expressões regulares normalmente não é recomendado para processar HTML e XML (percebo que isso é apenas um comentário), mas ... Se sua entrada for tão confiável quanto sugerida neste post, algo simples assim poderá fazer o truque .
Neste caso, refiro as partes da sua tag como e
(que se correlacionam aos itens entre parênteses na regex) para reduzir a quantidade de texto necessária para digitar a substituição.
Ou sem a opção -E
e sem referências anteriores:
#!/bin/bash
REPLACEWITH="Text to replace with here"
STARTTAG="BeginNoticeMSG"
ENDTAG="EndNoticeMSG"
sed -e "s/<\!\-\-$STARTTAG\-\->.*<\!\-\-$ENDTAG\-\->/<\!\-\-$STARTTAG\-\->$REPLACEWITH<\!\-\-$ENDTAG\-\->/" -i target_file.html