Como outros apontaram, sed e outras ferramentas baseadas em texto não funcionarão bem se alguma parte de um script parecer comentários, mas na verdade não são. 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 tem um recurso para reduzir o código. Isso inclui a remoção de 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ê quiser uma solução personalizada, deve ser bastante fácil escrever um programa Go de 20 linhas para remover comentários da maneira exata que você deseja.