Preciso procurar linhas que contenham alguma palavra, mas que não contenham uma segunda palavra.
Por exemplo, encontre linhas que contenham a palavra "This", mas não a palavra "red"
de modo que, para um arquivo contendo essas linhas
This is a blue coat
This is a red coat
This is a purple coat
That is a coat
A pesquisa localizaria apenas a primeira e a terceira linhas.
Obrigado por qualquer conselho!
Respostas:
Você pode usar este comando para imprimir linhas contendo
This
e nãored
:\&
separa as ramificações como uma lógica,AND
porque queremos as linhas que satisfazem as duas condições (ramificações),\(.*This\)
é o primeiro ramo, poderia simplesmente ser,This
mas é mais genérico dessa maneira,\(.*red\)\@!
é o segundo ramo,\@!
significa "correspondência de largura zero se o átomo anterior não corresponder", como uma lógicaNOT
.Em outras palavras:
fonte
Dê uma olhada neste post.
Combine-o com a resposta @romainl e você poderá fazer o que quiser.
Exemplo: Digamos que eu queira adicionar
const
a às funções que não as possuem.Script VIM:
Resultado:
Explicação:
- me todas as linhas que tem
word =
- combinar regras
- a linha não deve conter
const
.fonte