/ / Ajoute une barre oblique de fin à <entrée…> pour que cela ressemble à ceci <entrée… /> - regex, shell, sed

Ajoutez une barre oblique de fin à <entrée…>, pour que cela ressemble à ceci <entrée… /> - regex, shell, sed

J'ai besoin d'ajouter une barre oblique de fin à toutes les balises d'entrée manquantes. Donc au lieu de

<input id="1" class="hello">

Je voudrais obtenir:

<input id="1" class="hello" />

Comment puis-je faire cela en utilisant sed ou un autre outil bash?

Réponses:

5 pour la réponse № 1

Il n'est pas recommandé d'analyser et de substituer HTML à l'aide de regex. Mais si vous voulez une solution rapide basée sur un shell, la commande sed suivante devrait fonctionner:

sed "/<input /s#([^/])>#1/>#" file

Cela placera / seulement si > n'est pas déjà précédé d'une barre oblique.

PS: N'oubliez pas que votre balise HTML doit être complètement alignée.


1 pour la réponse № 2

Cela devrait fonctionner:

sed "/<input/s,[^/]>$,"/>," file