Besoin d'aide pour formuler un Vim Search & Replace


1

J'ai un fichier HTML volumineux dans lequel je dois rechercher et remplacer plus de 2000 occurrences de chaînes spécifiques. Je pouvais le faire manuellement, mais je suis sûr qu'il existe une commande de recherche et de remplacement de Vim qui pourrait le faire.

J'ai besoin de notes de bas de page pour remplacer une partie spécifique du texte du lien hypertexte.

Le lien de note de bas de page est formaté a aimé ceci:

<sup> <a href='#footnote-2020'> 2020 </a> </ sup>

Il existe plus de 2000 notes de bas de page portant chacune la référence 1-2020. Je voudrais supprimer le texte d'ancrage (2020 dans l'exemple ci-dessus) et le remplacer par un *. Je voudrais laisser le texte href '# footnote-2020' tel quel afin de préserver le lien.

Existe-t-il des utilisateurs chevronnés de Vim qui pourraient proposer une commande de recherche et de remplacement rapides?

Merci!


Je ne peux pas vous aider avec Vim, mais j'aimerais une solution Emacs :-P. Ou peut-être sed?
wingedsubmariner

Réponses:


1

Essaye ça:

:%s,\(<a href='#footnote-\d\+'>\)\d\+\(</a>\),\1*\2,g

Pour le décomposer:

%- Opère sur tout le fichier (il s'agit d'une plage spéciale)
,...,...,- Normalement, le délimiteur de: substitute est /, mais peut être n'importe quoi. J'ai utilisé des virgules à cause de la balise </a>.
\(...\)- Créez une sous-expression à utiliser dans le modèle de remplacement. Deux d'entre eux sont utilisés.
\d\+- Correspond à n'importe quel chiffre et le \+fait correspondre à un ou plusieurs.
\1/ \2- Dans le modèle de remplacement, est remplacé par les première et deuxième sous-expressions mentionnées plus haut.
g- L'indicateur "g" après qu'un modèle de remplacement indique qu'il fonctionne globalement dans chaque ligne, et pas seulement lors de la première correspondance d'une ligne.

Tout cela et plus est expliqué dans, :help pattern.txtmais cela pourrait être écrasant. Il existe un livre intitulé "Maîtriser les expressions régulières" qui peut être utile.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.