Isso parece funcionar, mas não pensei muito nisso:
sed -e '/^[[:space:]]*#/d'
Como excluo linhas que começam com #
, pois pode haver espaço em branco à esquerda e à direita de #
?
# Master socket provides access to userdb information. It's typically
Isso parece funcionar, mas não pensei muito nisso:
sed -e '/^[[:space:]]*#/d'
Você pode usar grep
para isso
grep -vh '^[[:space:]]*#' filename
Como, presumo, você está removendo comentários de algum arquivo, você também pode considerar remover linhas vazias, o que expande o texto acima para:
grep -vh '^[[:space:]]*\(#\|$\)' filename
awk
solution é 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
Usando os dados de amostra publicados por ДМИТРИЙ МАЛИКОВ ...
$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin
Eu prefiro usar o pcre com o grep, então eu uso o switch -P para grep (deve ser o grep do GNU). O segundo grep é o açúcar puro para dar as palavras sem espaço em branco. Também "removeria" linhas vazias.
perl -ne 'print if ! /^\s*#/' ./text
$ perl -pi -e '$_="" if /^\s*#/' filename