Antes de que los procesadores de texto tuvieran una función de revisión ortográfica, tenía que ejecutar su propia revisión ortográfica en un documento. Y en los primeros días de Unix, los sistemas no tenían un programa de «revisión ortográfica» dedicado, sino que requerían un conjunto de comandos para hacerlo usted mismo. Echemos un vistazo a cómo revisar la ortografía a la manera de “Unix de la vieja escuela”.
Comprobación de la ortografía en la línea de comandos
En estos días, no creemos en el corrector ortográfico de nuestro procesador de textos. Es factible que ya ni siquiera “ejecute” un corrector ortográfico. Es más fácil observar la línea ondulada roja que aparece debajo de las palabras mal escritas; si hay una línea roja debajo, corrige la ortografía.
En los primeros días de Unix, el sistema proporcionaba un archivo de diccionario (de forma general /usr/share/dict/words
en la mayoría de los sistemas Linux) que contenía una lista ordenada de palabras del diccionario, con cada palabra en una línea por sí misma. Para revisar la ortografía de un documento, debe comparar todas las palabras de su documento con el archivo del diccionario. Y para hacer eso, necesita convertir su documento a un formato que se parezca al archivo del diccionario: una lista ordenada de palabras, con cada palabra en su propia línea.
El archivo del diccionario está en minúsculas, por lo que primero debe convertir su documento para utilizar letras minúsculas. Haces esto con el cat
comando para mostrar el archivo, y el tr
comando para traducir caracteres de un conjunto a otro. Para este caso, puede preguntar tr
para convertir todas las letras mayúsculas Arizona a las letras minúsculas Arizona:
cat document | tr A-Z a-z
Aunque el diccionario incluye puntuación en palabras como guiones y apóstrofos, la lista de palabras no incluye puntuación de oraciones como puntos y signos de interrogación. Entonces, el siguiente paso es utilizar tr
, esta vez para quitar (-d
) los personajes que no queremos:
cat document | tr A-Z a-z | tr -d ',.:;()?!'
El archivo de diccionario tiene cada palabra en una línea por sí misma, por lo que debe dividir el documento para que cada palabra aparezca en su propia línea. los tr
El comando puede reemplazar espacios con un carácter de «nueva línea», para hacer esto por nosotros:
cat document | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n'
La clasificación de la salida se realiza fácilmente con Unix sort
mando. Añade el uniq
comando para limpiar la salida, para quitar cualquier palabra duplicada. A modo de ejemplo, probablemente use la palabra «el» varias veces en cualquier documento. Usando sort
después uniq
eliminará las instancias repetidas de «the» para que solo tenga un «the» en su salida.
cat document | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | sort | uniq
¡Ahora está listo para comparar la lista de palabras de su documento con el archivo del diccionario! El comando estándar de Unix comm
compara dos archivos línea por línea e identifica líneas que son únicas para el primer archivo, únicas para el segundo archivo o líneas que son comunes a ambos. Para hallar la lista de palabras mal escritas de su documento, desea la lista de palabras únicas: palabras que se encuentran en su documento, pero no en el archivo del diccionario. Usar el -2
opción a no imprime las palabras exclusivas del segundo archivo, y el -3
opción a no mostrar las palabras que son comunes a ambos archivos. Lo que queda son las palabras exclusivas de su documento que no aparecen en el diccionario; estas son palabras mal escritas.
cat document | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | sort | uniq | comm -2 -3 - /usr/share/dict/words
El guion simple dice comm
para leer de la «entrada estándar», que es la salida de los comandos anteriores en la línea de comandos.
¡Y así es como se revisa la ortografía a la manera de “Unix de la vieja escuela”! Déjame demostrarte con un documento de muestra. He escrito mal intencionalmente algunas palabras aquí:
$cat document Early Unix didn't have word procesors like we thikn of them today. Instead, you wrote a plain text document that might have embedded special commands to underline text or create a list of bulet points. But how did you check the spelling of your document?
Al ejecutar la lista de comandos, encontrará esta lista de palabras mal escritas:
$cat document | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | sort | uniq | comm -2 -3 - words bulet procesors thikn
La clave para revisar la ortografía de esta manera es Unix comm
comando para comparar dos listas ordenadas de palabras. Las dos listas deben ordenarse de la misma manera. Su sistema Linux /usr/share/dict/words
El archivo puede incluir algunas palabras en mayúsculas, como nombres comunes, títulos o ubicaciones. A modo de ejemplo, el archivo de diccionario en mi sistema Fedora 32 contiene “Minnesota” (mayúsculas correctas para el nombre del estado de EE. UU.) “Minnesota” (todo en minúsculas) en las líneas adyacentes. Pero el Unix sort
El comando clasifica las letras mayúsculas de forma separada de las minúsculas. Esto confundirá al comm
comando, que se quejará de que el archivo de entrada no está ordenado correctamente. Para que coincida mejor con el método de la “vieja escuela Unix” para verificar la ortografía, es factible que primero deba ordenar el archivo de diccionario de su sistema y guardarlo en un archivo separado. Puedes hacerlo así:
sort /usr/share/dict/words > words