Skip to content

Instantly share code, notes, and snippets.

@cosmoscalibur
Created August 21, 2017 19:47
Show Gist options
  • Save cosmoscalibur/695779472fa32c16193639f96aec79b7 to your computer and use it in GitHub Desktop.
Save cosmoscalibur/695779472fa32c16193639f96aec79b7 to your computer and use it in GitHub Desktop.
Convierte el reporte excel del DIVIPOLA a las listas de lemas de topónimos colombianos para diccionario hunspell.
#! /usr/bin/env bash
# Rutina elaborada por Edward Villegas Pulgarin (@cosmoscalibur en github).
# Genera lista de lemas de topónimos colombianos para diccionario hunspell a partir del reporte de DIVIPOLA.
# Realizado para la localización es_CO de [RLA-ES](https://github.com/sbosio/rla-es).
A=departamentos
B=municipios
C=centros_poblados
l=lista-
t=toponimos-
sc=sincabeceras.csv
function xls_a_categorias() {
# Se convierte reporte excel a archivo CSV. Filtros necesarios por codificación UTF-8.
soffice --convert-to csv --infilter=CSV:44,34,76,1 $1
nombrexls="${1%.*}"
xlscsv="$nombrexls".csv
# Primeras dos filas son cabeceras y últimas dos filas son información de actualización.
# Se remueven.
tail -n +3 $xlscsv | head -n -2 > $sc
# Se ajusta el separador de las columnas "," -> , (cut solo recibe separador de 1 carácter).
sed -i 's/","/,/g' $sc
# Se extraen columnas acorde al tipo de ente territorial y se ordenan eliminando repetidos.
# 4: departamentos; 5: municipios; 6: centros poblados.
cut -d ',' -f 4 $sc | sort -u > $l$A
cut -d ',' -f 5 $sc | sort -u > $l$B
cut -d ',' -f 6 $sc | sort -u > $l$C
# Se remueven archivos auxiliares
rm $xlscsv $sc
}
function categoria_formato() {
sed -E -i \
# Se remueven del nombre compuesto símbolos de puntuación y números arábigos.
-e 's/([[:punct:]]|[[:digit:]])+//g' \
# Se descomponen los nombres compuestos.
-e 's/ +/\n/g' $l$1
# Se ordena alfabéticamente el archivo eliminando repetidos y se remueven líneas vacías
sort -u $l$1 | sed '/^$/d' > $t$1.tmp
# Se remueven lemas de números romanos
sed -i -E '/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/d' $t$1.tmp
# El archivo original esta en mayúscula sostenida y se convierte a minúscula sostenida
cat $t$1.tmp | tr "[[:upper:]]" "[[:lower:]]" | tr "ÁÉÍÓÚÜÑ" "áéíóúüñ" > $t$1.txt
# Se convierte la minúscula inicial a mayúscula (convención de nombre propio)
sed -i -E -e 's/^(.)/\u\1/g' \
# Se eliminan lemas comunes
-e '/^(De|Del|El|Fé|La|Los|Las|Paz|Río|San|Sur|Norte|Y|Ciudad|Ciudadela|Corregimiento|Montaña|Alto|Altos)$/d' \
$t$1.txt
# Se eliminan archivos auxiliares
rm $l$1 $t$1.tmp
}
xls_a_categorias $1
entes=($A $B $C)
for ente in ${entes[@]}; do
categoria_formato $ente
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment