GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Filtrar la etiqueta Html y reemplazarla con otras etiquetas Html usando Sed?

Estaba reemplazando <B> y </B> con <STRONG> y </STRONG> en un archivo. Es algo así como reemplazar etiquetas hmtl. Usé sed 's/<B>/STRONG/g' . Hizo el trabajo, pero si está en el archivo [B] y [/B] está presente. Luego también se transforman en [STRONG] y [/STRONG] . No entiendo la lógica detrás de esto.

Respuesta aceptada:

Por defecto, sed usa expresiones regulares básicas. Eso significa que GNU permite < hacer coincidir el principio de una palabra y > coincidir con el final de una palabra. Observa:

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

<B> coincide con la palabra B que aparece dos veces en la cadena anterior. Porque coincide con la palabra B y no los corchetes angulares, los corchetes angulares se dejan sin cambios.

Si desea hacer coincidir los corchetes angulares, <> , deja la barra invertida desactivada:

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

<B> coincide con el paréntesis angular abierto seguido de B seguido del paréntesis angular de cierre. Por lo tanto, <B> se reemplaza con <STRONG> pero B se queda solo.

Capturar las etiquetas de apertura y cierre

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

-r es para expresiones regulares extendidas, pero las versiones recientes de GNU sed también son compatibles con -E como sinónimo de -r . BSD sed usa -E para esto y, según se informa, los futuros estándares POSIX han adoptado -E . Por lo tanto, por compatibilidad, uno puede querer usar (consejo de sombrero @Kos):

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

Ubuntu
  1. Uso de sed para buscar y reemplazar archivos de texto en Linux

  2. Usando múltiples patrones a la vez con el comando Sed

  3. ¿Reemplazar una línea con otro contenido usando Sed y paralelo para un archivo grande?

  4. ¿Usando Sed con caracteres especiales?

  5. Texto de archivo múltiple ¿Reemplazar con Sed?

Cómo acercar y alejar videos usando FFmpeg

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Uso de Flatpak en Ubuntu y otras distribuciones de Linux [Guía completa]

Uso de Yarn en Ubuntu y otras distribuciones de Linux

¿Cómo saber qué programa está usando Internet y cuánto?

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx