Exclua as linhas que começam com #

10

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
    
por chris4000 28.11.2011 / 14:25

6 respostas

13

Isso parece funcionar, mas não pensei muito nisso:

sed -e '/^[[:space:]]*#/d'
    
por 28.11.2011 / 14:30
10

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
    
por 28.11.2011 / 14:39
3

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
    
por 28.11.2011 / 16:00
0

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.

    
por 07.01.2012 / 08:36
0
perl -ne 'print if ! /^\s*#/' ./text
    
por 28.11.2011 / 19:59
-1
$ perl -pi -e '$_="" if /^\s*#/' filename
    
por 11.12.2011 / 21:49