Búsqueda de palabras en la RAE en línea de comandos

He fabricado un script (un lote de comandos) de bash shell en Linux para descargar y juguetear con búsquedas en la RAE, ya que resulta complicado pedir que tengan la deferencia de hacerla disponible para el público, como si la RAE fuese un organismo público pagado con dinero público.

Es el paso intermedio entre buscar una palabra y descargarme el diccionario completo palabra a palabra. Ahora toca hacer un pequeño programita que lo invoque para cada una de las palabras que tecleé para el proyecto de Isidoro Valcárcel Medina hace unos años y traiga sus definiciones.

Lo he llamado buscaenrae.sh.

Esta versión está modificada sobre la que publiqué hace unos días para subsanar errores relacionados con las palabras que contienen varias entradas/acepciones (no es lo mismo acepciones que entradas y soy consciente de ello, pero no es importante), así como para retirar las conjugaciones en los verbos.

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 salida palabra"
  echo -e "\tsalida es un valor númerico que identifica:"
	echo -e "\t[0] para generar un archivo HTML con la respuesta"
	echo -e "\t[1] para generar un archivo TXT  con la respuesta"
	echo -e "\t[2] para generar una línea  TXT  con la respuesta"
  exit
}
f_verbos="00000_VERBOS.txt"
f_errores="00000_ERRORES.txt"

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -lt 2 ]
then
  # Reportar uso inapropiado
  uso
else
  salida=$1
  if [ $# -eq 2 ]; then
    palabra="$2"
  elif [ $# -eq 3 ]; then 
    palabra="$2 $3"
  elif [ $# -eq 4 ]; then 
    palabra="$2 $3 $4"
  elif [ $# -eq 5 ]; then 
    palabra="$2 $3 $4 $5"
  fi
  # echo "Palabra es #$palabra#"
fi

# CONSULTA DEL SERVIDOR de la RAE simulando ser uno de los diversos navegadores posibles
navegador=(
  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
  "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:77.0) Gecko/20100101 Firefox/77.0"
  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
)
rnd=`echo $(($RANDOM%${#navegador[@]}))` # Elegimos un navegador al azar
# Hacemos la petición a la web de la RAE
curl -s --user-agent "${navegador[$rnd]}" https://dle.rae.es/"$palabra" > ./"$palabra.html"

# PROCESAMOS EL ARCHIVO OBTENIDO (Cortamos, retiramos lo innecesario, etc)
# Si se trata de un verbo, quitar las conjugaciones
id_conjugacion="
" esunverbo=`grep -c "$id_conjugacion" ./"$palabra.html"` if [ $esunverbo -gt 0 ] then echo "$palabra es un verbo" >> $f_verbos # ELIMINAMOS la(s) CONJUGACIÓN(ES) sed -i "/${id_conjugacion}/d" ./"$palabra.html" fi # Si tiene más de una acepción (Calcular cuántas después de saber si es un verbo) id_acepcion="
" num_acepciones=`grep -c "$id_acepcion" ./"$palabra.html"` # Si no tiene acepciones, la palabra no existe. No continuamos. if [ $num_acepciones -eq 0 ] then echo "$palabra no se ha encontrado en la RAE" >> $f_errores rm "./$palabra.html" exit fi # PARTIR en $num_acepciones EL FICHERO $palabra.html" # acepciones y acepciones_fin son 2 arrays de líneas PRECISO CONVERTIRLOS a cortes[] acepciones=`grep -n "$id_acepcion" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones do let cortes[$c]=$(($i)) let c=$(($c+1)) done acepciones_fin=`grep -n "$id_acepcion_fin" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones_fin do let cortes_fin[$c]=$(($i)) let c=$(($c+1)) done # GENERA FICHEROS palabra.X.html por cada ACEPCIÓN for (( i=0; i<$num_acepciones; i++ )) do # echo "El comienzo del corte está en ${cortes[$((i))]}" # echo "El fin del corte está en ${cortes_fin[$((i))]}" sed "${cortes[$((i))]},${cortes_fin[$((i))]} !d" "./$palabra.html" > "./$palabra.$i.html" # Distintas salidas del programa, en función de la variable "salida" if [ $salida -gt 0 ] # Salida a modo TXT then w3m "./$palabra.$i.html" > "./$palabra.$i.txt" if [ $salida -gt 1 ] # En una sóla línea then sed ':a;N;$!ba;s/\n/ /g' "./$palabra.$i.txt"|sed 's/ / /g' > "./$palabra.$i.1linea" fi fi done # BORRAR indica si dejar o no los archivos que no se deseen como salida BORRAR=1 if [[ $BORRAR -eq 1 ]] && [[ $salida -gt 0 ]] then rm "./$palabra."*html if [ $salida -eq 2 ] then rm "./$palabra."*txt fi fi # SALIDA FORZADA exit

Las primeras pruebas las he realizado con la palabra palabra, como debe ser.

buscaenrae.sh 2 palabra

Responderle

Soy malísimo con el leísmo/laísmo… y suelo dudar más de lo aceptable para alguien que se dedica a las letras, a correcciones ortotipográficas en esta incipiente editorial a la que ahora mismo sólo denomino Gabinete Literario de Clave 53. Así que cuando el autocorrector del ordenador me subrayó mi «responderle» como error y me sugirió cambiarlo por responderla/lo… me encontré con la duda y tuve que acudir a buscarlo en Internet. (Me avergüenza reconocerlo)

Afortunadamente, tal como yo había supuesto, no es complemento directo de la oración (que sería la respuesta dada, no el destinatario de la misma), así que debía ser LE.

Me sentí algo orgulloso de no haberme equivocado esta vez. Pero seguro que no será la última que tenga que recurrir a buscar para aclararme. «shame on me»

Flecos

Quedan flecos
que son flechas
como flemones
flatulentos.

Quedan flecos
flebíticos
que inflaman fequillos
fletaneros.

Quedan flecos
que son flexiones
irreflexivas con alma de fletán
flexible.

Quedan flecos
en el flexómetro de mi inquietud
flemática con arcos de metal
flexuoso.

Quedan flecos
en ángulos flechados
sobre la fleja del rinoceronte
fletador.

Quedan flecos
por mi alergia al fleo
y su pijama fexibilizador
sobre el flete.

Quedan flecos
que se mueren en un fletante
y cadencioso flexo
sordo y flemudo.

Quedan flecos
sin flejar
en aquel horizonte fletamento
que vimos flexionar.

Quedan flecos
pero pocos y flectados
en la flechería
de nuestro flegmático fleto sin flegma ni flor inapropiada.

Amorfo

aeriforme, aloforma, anatiforme, anseriforme, apterigiforme, arboriforme, ardeiforme, autotransformador, biforme, bioinformático, ca, calamiforme, caliciforme, campaniforme, canceriforme, caradriforme, carniforme, casuariforme, catartiforme, cauliforme, ciconiforme, claviforme, cloroformar, cloroformización, cloroformizar, cloroformo, coleriforme, columbiforme, conformador, conformar, conforme, conformemente, conformidad, conformismo, conformista, coniforme, conquiforme, contrainforme, contrarreforma, cordiforme, corniforme, crateriforme, cruciforme, cuadriforme, cuculiforme, cuneiforme, dactiliforme, deformable, deformación, deformador, ra, deformante, deformar, deformatorio, ria, deforme, deformidad, deiforme, dendriforme, desconformar, desconformidad, desformar, desinformación, desinformar, digitiforme, disconforme, disconformidad, disformar, disforme, disformidad, diversiforme, ensiforme, epileptiforme, escamiforme, escutiforme, esfenisciforme, espiciforme, espongiforme, esteliforme, estrigiforme, estrucioniforme, falciforme, falconiforme, filiforme, flabeliforme, forma, formable, formación, formador, ra, formadura, formaje, formal, formaldehido, formaleta, formalete, formalidad, formalina, formalismo, formalista, formalización, formalizar, formalmente, formalote, ta, formante, formar, formatear, formateo, formativo, va, formato, formatriz, -forme, formenterano, na, formero, formiato, formica, formicante, formícido, da, formidable, formidar, formidoloso, sa, formol, formón, formoseño, ña, formulación, formular, formulario, ria, formulismo, formulista, fungiforme, fusiforme, galliforme, gaseiforme, gruiforme, inconformarse, inconforme, inconformidad, inconformismo, inconformista, indeformable, información, informado, informador, ra, informal, informalidad, informalmente, informante, informar, informático, ca, informativista, informativo, va, informatización, informatizar, informe, informidad, informulable, infundibuliforme, irreformable, lariforme, lotiforme, malformación, malinformar, mamiforme, multiforme, multiplataforma, papiriforme, paseriforme, pectiniforme, pelecaniforme, performance, periforme, piriforme, pisciforme, pisiforme, plataforma, pleuronectiforme, poliforme, preformación, preformismo, preformista, proforma, proteiforme, psitaciforme, reforma, reformable, reformación, reformado, da, reformador, ra, reformar, reformativo, va, reformatorio, ria, reformismo, reformista, reiforme, reniforme, sacciforme, semiforme, transformable, transformación, transformacional, transformador, ra, transformamiento, transformar, transformativo, va, transformismo, transformista, trasformable, triforme, tubuliforme, unciforme, uniformado, da, uniformador, ra, uniformar, uniforme, uniformemente, uniformidad, uniformizar, vermiforme, yodoformo

¿Fluye el tiempo o influye?

¿Fluye el fluido tiempo o es la vida un fluido en el cauce espacio-tiempo?

Desde el punto de vista relativista-mecano-cuántico (o eso), sería la segunda opción la respuesta a esta pregunta que quizá está absurdamente formulada, pues andan algo indefinidas las palabras tiempo y vida, e incluso cauce.

Así que no sé si merece la pena responder a estas cuestiones o tan sólo formularlas para divertirnos un rato jugueteando con el lenguaje.

Como en esta composición visual que relaciona palabras del mismo campo semántico y que hacen una velada referencia a esa gripe, «flu» en inglés, que nos tiene responsablemente confinados.

Vivir es la última palabra

Hoy he tenido el regalo de ser incluido en el proyecto de Ana Matey titulado Retratos en mi ventana rodeado de una veintena de artistas a los que admiro y respeto:

Jose Antonio Nieto aka Pangea, Mario Bastian, Wade Matthews, Isabel Corullón, Marta Sainz, Christian Fernández- Mirón, Mario Montoya & Daniel Spence, José Manuel Berenger, Yolanda Pérez Herreras, Bartolomé Ferrando, Giusseppe Domínguez, Nieves Correa, Felipe Ortega- Regalado, Johanna Speidel, Isabel León & Jorge Talavera, Sofía Misma, Pedro Alba, Joana Bravo, Joan Casellas, Paco Justicia, Maria Rosa Hidalgo, Rosa Palmeida, Enrique Zaccagnini, Paquito Nogales, Igor Sousa…

[youtube_sc url=»https://youtu.be/qkC96g9iRRg» title=»Retratos%20desde%20mi%20ventana%2011″]

Para la pieza que me incluye, la número 11, realicé hace unos días la composición «palimpséstica» titulada Vivir es la última palabra relacionada con la terna de letras VIR, en este periodo vírico que estamos viviendo con tamaña intensidad, lo que lo vincula a mis proyectos de Campo Semántico y Palimpsesto.

 

Vivir es la última palabra

adenovirus, antiviral, antivirus, bienvivir, centunviral, centunvirato, centunviro, chivirico, cochevira, convivir, cuatorvirato, cuatorviro, decenvir, decenviral, decenvirato, decenviro, deservir, desvirar, desvirgar, desvirtuación, desvirtuador, desvirtuar, desvivirse, duunvir, duunviral, duunvirato, duunviro, elzevir, elzeviriana, envirar, envirotado, hervir, invirtud, invirtuosa, levirato, malvivir, pervivir, rehervir, retrovirus, revirar, revivir, sanavirón, sempervirente, servir, séviro, sinvivir, sivir, sobrevivir, supervivir, tornavirón, tragavirotes, triunviral, triunvirato, triunviro, vira, viracocha, virada, virado, virador, virago, viral, virar, viraró, viratón, viravira, virazón, vireca, virgaza, virgen, virgiliano, virginal, virginalera, virgíneo, virginia, virginiana, virginidad, virgo, virguería, virguero, virgulilla, virigaza, viril, virilidad, virilismo, virilización, virilizarse, virilmente, virina, virio, viripotencia, viripotente, virol, virola, virolento, viroleña, virología, viróloga, virolo, virón, virósica, virosis, virotazo, virote, virotillo, virotismo, virreina, virreinal, virreinato, virreino, virrey, virtual, virtualidad, virtualmente, virtud, virtuosamente, virtuosismo, virtuosista, virtuosístico, virtuosa, viruela, virulana, virulé, virulencia, virulento, virus, viruta, virutilla, vivalavirgen, vivir

Esto no es una broma