Como comentado por 'don_crissti', você tem que escapar do cifrão, caso contrário ele tenta obter um conteúdo variável (que está vazio no seu caso).
Alternativamente, seria mais seguro se você usar um separador diferente de '/', pois você também tem barras no seu arquivo. No entanto, não é um problema no seu caso, desde que você não os use na expressão de substituição.
Minha solução de trabalho:
sed -i 's!\$channel_name Policy!&_'$(date +%m_%Y)'!g' policies.txt
A segunda melhoria possível é o uso do &
na substituição, já que é exatamente a expressão pesquisada mais alguns extras.
E em terceiro lugar, no meu teste, só consegui fazer com que o comando $(date +%m_%Y)
funcionasse fora da expressão sed
(agrupada por aspas simples).
Eu tentei em GNU sed
(a linha acima) e com OSX sed
, mas nenhum deles conseguiu interpretar corretamente o $(command)
.