Como outros já apontaram, o sed e outras ferramentas baseadas em texto não funcionarão bem se alguma parte do script se parecer com comentários, mas na verdade não for. Por exemplo, você pode encontrar um # dentro de uma string, ou o bastante comum $#
e ${#param}
.
Eu escrevi um formatador de shell chamado shfmt , que possui um recurso para reduzir o código. Isso inclui remover comentários, entre outras coisas:
$ cat foo.sh
echo $# # inline comment
# lone comment
echo '# this is not a comment'
[mvdan@carbon:12] [0] [/home/mvdan]
$ shfmt -mn foo.sh
echo $#
echo '# this is not a comment'
O analisador e a impressora são pacotes Go, portanto, se você deseja uma solução personalizada, deve ser bastante fácil escrever um programa Go de 20 linhas para remover os comentários da maneira exata desejada.