Как уже отмечали другие, sed и другие текстовые инструменты не будут работать хорошо, если какие-либо части скрипта выглядят как комментарии, но на самом деле это не так. Например, вы можете найти # внутри строки, или довольно распространенный $#
и ${#param}
.
Я написал средство форматирования оболочки под названием shfmt , в котором есть функция минимизации кода. Это включает в себя удаление комментариев, среди прочего:
$ 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'
Синтаксический анализатор и принтер являются пакетами Go, поэтому, если вам нужно нестандартное решение, довольно легко написать программу Go из 20 строк, которая удалит комментарии именно тем способом, который вам нужен.