usando grep --recursivo, como excluir uma linha específica com a palavra 'indesejada' e 'desejada' nela?

5

Atualmente estou construindo meus dotfiles e quero listar todos os TODO: ... comentários no diretório do meu projeto, criei um alias de bash para fazer isso:

 alias mytodo='grep --recursive "TODO: "'

Funciona bem, no entanto, também retorna a definição de alias. esta é a saída da amostra.

 devs@dotfiles$ mytodo

 bash/profile.d/aliases/: alias mytodo='grep --recursive "TODO: "'
 bin/git_branch_status/: # TODO: Add checking of remote branch status.
 tools/setup/: # TODO: Add search for existing symlinks.

como posso especificamente excluir essa linha com a definição de alias?

    
por cevhyruz 20.09.2018 / 11:22

2 respostas

11

Uma maneira de impedir que um regexp corresponda a si mesmo é colocar um único caractere em uma classe de caractere:

alias mytodo='grep --recursive "TOD[O]: "'

Como alternativa, (com o dica para Stéphane Chazelas ), você pode salvar o pseudônimo com aspas extras no padrão:

alias mytodo='grep --recursive "TO''DO: "'

A linha ainda não será encontrada, mas o alias contém o padrão original. Isso é útil quando você deseja usar, por exemplo. uma correspondência de cadeia fixa ( grep -F ).

    
por 20.09.2018 / 11:30
3

Você pode simplesmente canalizá-lo para grep -v 'alias' para obter todas as linhas que não contêm alias .

    
por 20.09.2018 / 11:25

Tags