Use []]
para representar o ]
em um regex. Use @
como o delimitador da expressão sed desde que sua string de substituição tenha /
.
sed -e "s@[]]@${key}${newnum}@" ${list}
Você também pode escapar com uma barra invertida:
sed -e "s@\]@${key}${newnum}@" ${list}
Como ]
é conhecido como o final da string, você também pode alterar o último caracter sem levar em conta o que é:
sed -e "s@.\$@${key}${newnum}@" ${list}