sando o script sed no bash para substituir os aliases do LaT

Sou relativamente novo no bash scripting e não tenho experiência com o LaTeX. Foi-me pedido que desenvolva um script que substitua os atalhos de conveniência nos documentos do LaTeX pelos seus equivalentes de formato longo mais pesado

minha abordagem até agora foi isolar o atalho e o formato longo em variáveis separadas e, em seguida, tentar substituí-los no texto usando sed. Anexei pequenos arquivos de exemplo abaixo.

Como atualmente o script usa 2 argumentos, um arquivo expr do qual recupera os atalhos e a terminologia de formato longo e um infile no qual é suposto fazer as alterações apropriadas. Eu sei que o script está isolando adequadamente os atalhos e os formulários longos e pode devolvê-los, mas parece que não consegue executar o comando se

Tentei pesquisar on-line e encontrei várias perguntas semelhantes, onde a sugestão era que o sed dificilmente reconhece a variável e que vários tipos de combinações de cotações podem resolver o problema. Eu tentei muitas permutações e nenhuma parece funcionar. As terminologias de formato longo, em muitos casos, contêm caracteres especiais como '!$3$!#39; e '{}'; portanto, suspeito que esse seja o problema, mas não tenho certeza. Também estou muito aberto a outras idéias sobre como resolver o problema. Encontre abaixo exemplos de arquivos de script e 2 argumentos, expr e infile.

rquivo @expr contendo atalhos e formulários longos

% a
\newcommand{\ao}{$^{18}$O}
\newcommand{\aodso}{$^{18}$O/$^{16}$O}
% b
\newcommand{\bea}{\begin{equation}}
\newcommand{\beaa}{\begin{eqnarray}}
% c
\newcommand{\cthree}{C$_3$}
\newcommand{\cfour}{C$_4$}
\newcommand{\coz}{CO$_2$}

arquivo contendo atalhos a serem substituídos por formulários longos

This is my test {\ao} 
{\aodso} my test is this
Does it work {\bea}
{\beaa} test test test
work work work {\cthree}
{\cfour} This is my test
my test is this {\coz}

ubseção relevante de script chamada com expr e infile como argumento

while read line; do
    if [[ $line == \newcommand* ]]; then
    temp=${line#*\{}
    sc=${temp%%\}*} 
    templf=${temp#*\{}
    lf=${templf%\}}
    #echo $sc, $lf
    sed -i -e 's/${sc}/${lf}/g' ${infile}
    fi
done < ${expr}

UPDATE: Para esclarecimento, é esse o resultado desejado, os atalhos presentes no infile seriam substituídos pelo formato longo apropriado

This is my test {$^{18}$O}
{$^{18}$O/$^{16}$O} my test is this
Does it work {\begin{equation}}
{\begin{eqnarray}} test test test
work work work {C$_3$}
{C$_4$} This is my test
my test is this {CO$_2$}

questionAnswers(3)

yourAnswerToTheQuestion