GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Filtrer la balise HTML et la remplacer par d'autres balises HTML à l'aide de Sed ?

Je remplaçais <B> et </B> avec <STRONG> et </STRONG> dans un dossier. C'est un peu comme remplacer les balises hmtl. J'ai utilisé sed 's/<B>/STRONG/g' . Il a fait le travail mais si dans le fichier [B] et [/B] est présent. Ensuite, ils sont également changés en [STRONG] et [/STRONG] . Je ne comprends pas la logique derrière tout ça.

Réponse acceptée :

Par défaut, sed utilise des expressions régulières de base. Cela signifie que GNU laisse < faire correspondre le début d'un mot et > correspondre à la fin d'un mot. Observe :

$ echo '<B> BBB B' | sed 's/<B>/STRONG/g'
<STRONG> BBB STRONG

<B> correspond au mot B qui apparaît deux fois dans la chaîne ci-dessus. Parce qu'il correspond au mot B et non les crochets angulaires, les crochets angulaires restent inchangés.

Si vous souhaitez faire correspondre les chevrons, <> , laissez la barre oblique inversée :

$ echo '<B> BBB B' | sed 's/<B>/<STRONG>/g'
<STRONG> BBB B

<B> correspond au crochet ouvert suivi de B suivie d'une équerre fermante. Ainsi, <B> est remplacé par <STRONG> mais B est laissé seul.

Récupérer les balises d'ouverture et de fermeture

$ echo '<B> BBB B </B>' | sed -r 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

-r est pour les expressions régulières étendues mais les versions récentes de GNU sed prennent également en charge -E comme synonyme de -r . BSD sed utilise -E pour cela et, semble-t-il, les futures normes POSIX ont adopté -E . Ainsi, pour la compatibilité, on peut vouloir utiliser (hat tip @Kos) :

$ echo '<B> BBB B </B>' | sed -E 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

Ubuntu
  1. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  2. Utiliser grep et sed pour rechercher et remplacer une chaîne

  3. Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

  4. Comment remplacer récursivement les caractères par sed ?

  5. sed remplace tous les onglets et espaces par un seul espace

Comment zoomer et dézoomer des vidéos à l'aide de FFmpeg

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Utilisation de Flatpak sur Ubuntu et d'autres distributions Linux [Guide complet]

Utilisation de Yarn sur Ubuntu et d'autres distributions Linux

Comment savoir quel programme utilise Internet et combien ?

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx