Question Comment supprimer toutes les lignes qui ne contiennent pas un certain mot dans Vim?


Dans vim je peux supprimer toutes les lignes contenant le mot "price" avec cette

:g /price/d

Comment puis-je supprimer toutes les lignes qui ne contiennent PAS le mot "prix"?


86
2018-03-31 23:00


origine


Peut-on migrer cette question vers vi.stackexchange.com? J'ai essayé de le signaler pour la migration, mais je n'ai pas pu le comprendre. - Mu Mind
@MuMind C'est sur le sujet ici, donc pas besoin de migrer. "Ne pas migrer pour des raisons de migration. Nous ne faisons que migrer les questions car elles sont hors-sujet sur le site d'origine. Il est parfaitement possible qu'une question soit sur le sujet sur plusieurs sites, mais ce n'est pas une raison pour la migrer ailleurs, à moins que le PO ne demande la migration. "De plus, seuls les employés SE peuvent migrer après 60 jours et il est très rare qu'ils migrent. sera (même pas les modérateurs peuvent migrer une ancienne question). - 8bittree


Réponses:


Vous pouvez utiliser

:%g!/price/d

supprimer toutes les lignes ne contenant pas "price"


121
2018-03-31 23:09



Je savais que ce serait facile ... - digitaljoel
:g! est également connu sous le nom :v (semblable à grep -v). - Chris Johnsen
Que fait le % faire? - hippietrail
% est une plage spéciale dans ce contexte qui signifie tout le fichier. Voir :help cmdline-ranges. - Heptite


Vous pouvez aussi utiliser:

:v/price/d

pour supprimer des lignes.


13
2017-10-07 08:03





%!grep "price"

est une autre option qui peut être considérablement plus rapide que :v pour les gros fichiers.

Testé sur Vim 7.4, Ubuntu 14.04, fichier journal de ligne 1M.

Lignes contenant un mot: https://stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-begin-with-certain-characters/42714334#42714334


3
2018-03-10 09:02