Récemment, je faisais beaucoup d'édition de texte sur l'un de mes serveurs (pour une activité de maintenance) - où je devais optimiser la taille d'un fichier en supprimant tout ce qui avait un motif spécifique, parfois toutes les lignes commentées et parfois toutes les lignes qui ne contiennent pas un motif spécifique.
Par exemple, l'un de mes serveurs avait de nombreux comptes d'utilisateurs désactivés (lignes commentées dans le fichier /etc/passwd) - où je dois supprimer tous ces comptes désactivés (ceux commentés) à l'aide de vim. Voici ce que j'ai fait :
Remarque : Vous devrez le faire en mode commande – ESC et :
Si vous souhaitez supprimer toutes les lignes commentées d'un fichier , alors vous devrez supprimer les lignes commençant par '#'.
:g/#/d
(ou)
:g/^\#/d
Supposons que vous souhaitiez supprimer toutes les lignes qui correspondent/contiennent un motif spécifique – alors la commande est similaire à celle ci-dessus. Par exemple :
:g/somepattern/d
Si vous souhaitez supprimer toutes les lignes qui ne contiennent pas un modèle spécifique , disons laisser toutes les lignes commentées et supprimer le reste. Recherchez le symbole " !" dans la commande ci-dessous
:g!/#/d
La commande ci-dessus supprimera toutes les lignes qui ne commencent pas par '#'. Vous pouvez également utiliser la commande ci-dessous.
: v/#/d
Dans la commande ci-dessus, nous utilisons 'v' au lieu de 'g' et aucun '!' n'est requis.