Quitar o borrar clases de un código HTML de forma automática
Todo programador que trabaja con varios programas, entornos y sistemas operativos se puede encontrar con dificultades a la hora de utilizar el código que automáticamente genera una herramienta de desarrollo.
Personalmente, tengo debilidad por los comandos de Linux/MAC que modifican texto porque te pueden solucionar de una forma muy rápida alguna necesidad concreta.
Esta yo hoy intentando poner una entrada en este mismo blog, pero escrita desde otra herramienta. Al copiar/pegar me ha puesto el siguiente código
..... <p class="western" align="left">Una consideración a tener en cuenta es que el nuevo fichero o directorio que se crea tendrá los permisos del usuario que ejecuta la orden, no los mismos que el original. Si queremos que también se copien los atributos, utilizaríamos la opción -p</p> <h2 class="StepTitle"><span id="Explicaciones_en_video">Explicaciones en video</span></h2> <div class="StepInstructions"> .....
Cuando uno quiere que todos las entradas de una web se vean de la misma forma, es mejor no insertar clases a los párrafos, ni a los títulos ni nada de nada. Así que me he encontrado con 95 líneas en HTML a los que necesitaba quitarles la etiqueta class.
Una opción es ir uno a uno, claro. Pero mejor buscar una solución más eficiente. La otra es intentan buscar con un editor de texto en el entorno gráfico algún buscar/reemplazar para borrar lo que no quiero, pero claro, no todas las clases se llaman igual y yo quiero borrarlas todas.
Y aquí entran en juego las expresiones regulares. Ciertamente hay editores que permiten buscar y reemplazar usando expresiones regulares, pero tendría que perder el tiempo buscando el editor que interprete justo lo que yo quiero hacer.
Afortunadamente existen los comandos para modificar texto en modo consola como sed. Ya expliqué en este video porqué considero que son herramientas fundamentales para todo programador/administrador que se precie.
La solución la he encontrado en pocos minutos copiando el código en un fichero temporal y ejecutando el siguiente comando en mi consola de MAC OS X (obviamente también válido para cualquier Linux, aunque puede que en algunos haya que sustituir la -E por -r -e):
sed -E 's/class="[[:alpha:]]+"//g' temporal
En esta expresión se indica que busque todas las etiquetas class que contengan alguna palabra y las sustituya por nada, o sea, que las borre. Cierto es que no necesito que borre varias clases, caso que se complicaría algo más, pero que modificando la expresión regular también tendríamos solucionado.
El resultado fue este:
... <p align="left">Una consideración a tener en cuenta es que el nuevo fichero o directorio que se crea tendrá los permisos del usuario que ejecuta la orden, no los mismos que el original. Si queremos que también se copien los atributos, utilizaríamos la opción -p</p> <h2 ><span id="Explicaciones_en_video">Explicaciones en video</span></h2> <div > ...
Te aseguro que conocer la manera de procesar texto en el intérprete de comandos es muy útil. Si quieres aprender más te invito a mi curso de comandos para el manejo de texto el Linux, al que tendrás acceso con un descuento exclusivo.