Respostas:
Isso parece funcionar, mas eu não pensei muito nisso:
sed -e '/^[[:space:]]*#/d'
Você pode usar grep
para isso
grep -vh '^[[:space:]]*#' filename
Como, como presumo, você está retirando comentários de algum arquivo, considere também remover linhas vazias, o que expande o acima para:
grep -vh '^[[:space:]]*\(#\|$\)' filename
awk
A solução é inverter a correspondência do seu padrão.
$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
#ok
penguin
# !
$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin
awk '/^ *#/{next}1' file
deve ser bom o suficiente.
perl -ne 'print if ! /^\s*#/' ./text
Usando os dados de amostra publicados por ДМИТРИЙ МАЛИКОВ ...
$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin
Eu prefiro usar o pcre com grep, então eu uso a opção -P para grep (deve ser GNU grep). O segundo grep é açúcar puro para fornecer as palavras sem espaço em branco. Também "removeria" as linhas vazias.
awk '!/^ *#/' ./text
.