grep para encontrar “print” não “#print”

3

Na depuração, eu uso muito 'print' e comento com '#print'. Como posso usar o grep para encontrar a linha sem '#' antes de 'print'?

# print <- not detect
#print <- not detect
abc # print <-- not detect
print <- detect
    
por prosseek 13.03.2013 / 16:25

4 respostas

3
grep '^[^#]*print'

Seria print precedido apenas por caracteres não #.

    
por 13.03.2013 / 17:41
1

Solução clássica:

grep -v '^#' <input |grep 'print'
    
por 13.03.2013 / 16:32
1

A abordagem mais fácil provavelmente será usar dois grep s, juntos.

$ grep 'print' <input | grep -v '#[[:space:]]*print'

Com o arquivo input contendo seus exemplos, isso dá:

print <- detect

Isso funciona para todos os seus exemplos. O que provavelmente é bom o suficiente, mas como manatwork e eu apontamos nos comentários, será muito difícil derrotar todos os casos com grep .

    
por 13.03.2013 / 17:07
1

Eu ainda estou aprendendo, mas o ff também não funciona?

grep -v '#[ ]*print' input_file
    
por 13.03.2013 / 17:23

Tags