Вы находитесь на странице: 1из 5

Cmo sustituir vocales acentuadas en documentos HTML con SED ?

Escrito por Domingo Varela Viernes, 25 de Septiembre de 2009 08:49 - Actualizado Lunes, 21 de Diciembre de 2009 20:22

Hay ocaciones en que uno suele escribir documentos HTML en diferentes tipos de editores tales como: kwrite, quanta, nano, pico o vi. Pero la cuestion no es la redaccin de la misma, si no en la revisin de los diferentes caracteres especiales como las vocales acentuadas las ""s, etc. En virtud de que el documento deber de estar bien editado en cuanto a la sintaxis y en sus correspondientes codigos html como lo son las vocales, es decir: > á > é > í > ó > ú > Á ... el sustituirlas a manos es un gran trabajo, para ello hecharemos mano del comando SED .

Por ejemplo si se requiere cambiar el archivo que contenga las vocales acentudas ejecutaremos el siguiente comando largo:

cat acentos.txt | sed -e 's//á/' -e 's//é/' -e 's//í/' -e 's//ó/' -e 's//ú/' > acentos2.txt

Pero aqui existe un pequeo problema, ya que al ejecutar el comando anterior daria como resultado: aacute; eacute; iacute; oacute; uacute;

Aquie en vez de sustituir el texto, el problema radica en el caracter "&",para solucionar este problema en bash el "&" es un caracter especial. Para que se ejecute sin tener en cuenta esa "especialidad", basta con precederlo con una barra oblicua "&". Adems, en la anterior pseudo-solucin se me haba olvidado aadir "g" a cada sustitucin. En fin, la solucin definitiva es sta: cat acentos.txt | sed -e 's//á/g'

1/5

Cmo sustituir vocales acentuadas en documentos HTML con SED ?


Escrito por Domingo Varela Viernes, 25 de Septiembre de 2009 08:49 - Actualizado Lunes, 21 de Diciembre de 2009 20:22

-e 's//é/g' -e 's//í/g' -e 's//ó/g' -e 's//ú/g' -e 's//ñ/g' -e 's//Á/g' -e 's//É/g' -e 's//Í/g' -e 's//Ó/g' -e 's//Ú/g' -e 's//Ñ/g' > acentos2.txt

Ponerlo en un pequeo shell script seria

#!/bin/bash archivo=$1 cat $archivo | sed -e 's//á/g' -e 's//é/g' -e 's//í/g' -e 's//ó/g' -e 's//ú/g' -e 's//ñ/g' -e 's//Á/g' -e 's//É/g' -e 's//Í/g' -e 's//Ó/g' -e 's//Ú/g' -e 's//Ñ/g' > ${archivo}.txt Guardamos el archivo como "acentos.sh", nos aseguramos de que es ejecutable, y el uso es muy sencillo: si el archivo en el que queremos hacer la sustitucin se llama "archivo.txt", tecleamos lo siguiente: ./acentos.sh archivo.txt Y nos crear un archivo de salida con nombre "archivo.txt".

2/5

Cmo sustituir vocales acentuadas en documentos HTML con SED ?


Escrito por Domingo Varela Viernes, 25 de Septiembre de 2009 08:49 - Actualizado Lunes, 21 de Diciembre de 2009 20:22

- Una variante del script: ahora si tecleamos "acentos archivo.html", primero crear una copia de seguridad del archivo de nombre "archivo.html.bak", luego realizar los cambios en dicho archivo, y guardar los cambios de nuevo en el archivo "archivo.html". De esta manera el archivo modificado resultante tendr el mismo nombre que el original (con lo cual no hay que tomarse la molestia de andar cambiando la extensin al archivo), y se habr creado un archivo de respaldo de extensin .bak, por si acaso. Ah, de paso tambin he aadido unos cuantos caracteres especiales ms. El cdigo es el siguiente:

#!/bin/bash archivo=$1 cp $archivo ${archivo}.bak && cat ${archivo}.bak | sed -e 's//á/g' -e 's//é/g' -e 's//í/g' -e 's//ó/g' -e 's//ú/g' -e 's//ñ/g' -e 's//Á/g' -e 's//É/g' -e 's//Í/g' -e 's//Ó/g' -e 's//Ú/g' -e 's//Ñ/g' -e 's//©/g' -e 's//¡/g' -e 's//§/g' -e 's//ª/g' -e 's//«/g' -e 's//®/g' -e 's//±/g' -e 's//²/g' -e 's//³/g' -e 's//¶/g' -e 's//º/g' -e 's//»/g' -e 's//¿/g' -e 's//Æ/g' -e 's//Ç/g' -e 's//æ/g' -e 's//ç/g' -e 's//Ü/g'

3/5

Cmo sustituir vocales acentuadas en documentos HTML con SED ?


Escrito por Domingo Varela Viernes, 25 de Septiembre de 2009 08:49 - Actualizado Lunes, 21 de Diciembre de 2009 20:22

-e 's//ü/g' > $archivo

Finalmente, se ha creado un shell script de manera muy general para todos los archivos con caracteres y/o vocales acentuadas.

Ejemplo: acentos archivo1.html archivo2.html #!/bin/bash if [ "--help" = "$1" ] || [ "0" = "$#" ] then echo echo "Uso:" echo " acentos < archivo1 archivo2 ... archivoN >" echo exit 0 fi until [ -z "$1" ] do archivo="$1" if [ -f $archivo ] then cp $archivo ${archivo}.bak cat ${archivo}.bak | sed -e 's//&aacute;/g' -e 's//&eacute;/g' -e 's//&iacute;/g' -e 's//&oacute;/g' -e 's//&uacute;/g' -e 's//&ntilde;/g' -e 's//&Aacute;/g' -e 's//&Eacute;/g' -e 's//&Iacute;/g' -e 's//&Oacute;/g' -e 's//&Uacute;/g' -e 's//&Ntilde;/g' -e 's//&copy;/g' -e 's//&iexcl;/g' -e 's//&sect;/g' -e 's//&ordf;/g' -e 's//&laquo;/g' -e 's//&reg;/g'

4/5

Cmo sustituir vocales acentuadas en documentos HTML con SED ?


Escrito por Domingo Varela Viernes, 25 de Septiembre de 2009 08:49 - Actualizado Lunes, 21 de Diciembre de 2009 20:22

-e 's//&plusmn;/g' -e 's//&sup2;/g' -e 's//&sup3;/g' -e 's//&para;/g' -e 's//&ordm;/g' -e 's//&raquo;/g' -e 's//&iquest;/g' -e 's//&AElig;/g' -e 's//&Ccedil;/g' -e 's//&aelig;/g' -e 's//&ccedil;/g' -e 's//&Uuml;/g' -e 's//&uuml;/g' > $archivo else if [ -d $archivo ] then echo "$archivo: Es un directorio" else echo "$archivo: Archivo no existente" fi fi shift done Ms informacion en : Advanced Bash-Scripting Guide .

5/5

Вам также может понравиться