GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Filtra i tag HTML e sostituiscili con altri tag HTML usando Sed?

Stavo sostituendo <B> e </B> con <STRONG> e </STRONG> in un file. È un po' come sostituire i tag hmtl. Ho usato sed 's/<B>/STRONG/g' . Ha fatto il lavoro ma se nel file [B] e [/B] è presente. Quindi anche loro vengono cambiati in [STRONG] e [/STRONG] . Non capisco la logica dietro.

Risposta accettata:

Per impostazione predefinita, sed utilizza espressioni regolari di base. Ciò significa che GNU consente < trova l'inizio di una parola e > corrisponde alla fine di una parola. Osserva:

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

<B> corrisponde alla parola B che appare due volte nella stringa sopra. Perché corrisponde alla parola B e non le parentesi angolari, le parentesi angolari rimangono invariate.

Se vuoi far corrispondere le parentesi angolari, <> , lascia la barra rovesciata disattivata:

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

<B> corrisponde a parentesi angolari aperte seguite da B seguito da parentesi angolare di chiusura. Pertanto, <B> viene sostituito con <STRONG> ma B è lasciato solo.

Cattura sia i tag di apertura che di chiusura

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

-r è per espressioni regolari estese ma le versioni recenti di GNU sed supportano anche -E come sinonimo di -r . BSD sed usa -E per questo e, secondo quanto riferito, i futuri standard POSIX hanno adottato -E . Pertanto, per compatibilità, si potrebbe voler utilizzare (consiglio di cappello @Kos):

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

Ubuntu
  1. Utilizzo di sed per trovare e sostituire file di testo in Linux

  2. Utilizzo di più modelli contemporaneamente con il comando Sed

  3. Sostituire una riga con un altro contenuto utilizzando Sed e Parallel per un file di grandi dimensioni?

  4. Trova e sostituisci il testo in un file tra un intervallo di righe usando sed

  5. sed sostituisce tutte le tabulazioni e gli spazi con un singolo spazio

Come ingrandire e rimpicciolire i video utilizzando FFmpeg

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Utilizzo di Flatpak su Ubuntu e altre distribuzioni Linux [Guida completa]

Utilizzo di Yarn su Ubuntu e altre distribuzioni Linux

Come scoprire quale programma utilizza Internet e quanto?

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx