J'ai besoin de rechercher des lignes contenant un mot mais pas un deuxième mot.
Par exemple, recherchez les lignes qui contiennent le mot «ceci» mais pas le mot «rouge»
de sorte que pour un fichier contenant ces lignes
This is a blue coat
This is a red coat
This is a purple coat
That is a coat
La recherche localiserait uniquement les première et troisième lignes.
Merci pour tout conseil!
Réponses:
Vous pouvez utiliser cette commande pour imprimer des lignes contenant
This
et nonred
:\&
sépare les branches comme une logiqueAND
parce que nous voulons les lignes qui remplissent les deux conditions (branches),\(.*This\)
est la première branche, ça pourrait être tout simplementThis
mais c'est plus générique de cette façon,\(.*red\)\@!
est la deuxième branche,\@!
signifie "correspondance de largeur nulle si l'atome précédent ne correspond pas", comme une logiqueNOT
.En d'autres termes:
la source
Jetez un oeil à ce post.
Combinez-le avec la réponse @romainl et vous pouvez faire ce que vous voulez.
Exemple: disons que je veux ajouter un
const
aux fonctions qui n'en ont pas.Script VIM:
Production:
Explication:
- obtenez-moi toutes les lignes qui ont
word =
- combiner les règles
- la ligne ne doit pas contenir
const
.la source